我正在尝试对进行一些文本分析pandas
dataframe
,但是流程有些麻烦。或者,也许我只是不明白... PS-我是python初学者。
数据框示例:
df = pd.DataFrame({'Document' : ['a','1','a', '6','7','N'], 'Type' : ['7', 'E', 'Y', '6', 'C', '9']})
Document Type
0 a 7
1 1 E
2 a Y
3 6 6
4 7 C
5 N 9
我正在尝试建立一个流程,如果“文档”或“类型”是数字或不是数字,请执行某些操作。
这是一个简单的函数,用于返回“文档”是否为数字(已编辑以显示我如何尝试某些“如果/然后在字段上流动”):
def fn(dfname):
if dfname['Document'].apply(str.isdigit):
dfname['Check'] = 'Y'
else:
dfname['Check'] = 'N'
现在,我将apply
其移至数据框:
df.apply(fn(df), axis=0)
我收到此错误:
TypeError: ("'NoneType' object is not callable", u'occurred at index Document')
从错误消息中,看来我没有正确处理索引。谁能看到我要去哪里错了?
最后-这可能与问题无关,但与的indexes
工作方式有关,我确实很挣扎pandas
。我认为我遇到的索引问题比其他任何问题都要多。
你近了
关于应用,您必须意识到的是,您需要编写对标量值进行运算的函数并返回所需的结果。考虑到这一点:
import pandas as pd
df = pd.DataFrame({'Document' : ['a','1','a', '6','7','N'], 'Type' : ['7', 'E', 'Y', '6', 'C', '9']})
def fn(val):
if str(val).isdigit():
return 'Y'
else:
return 'N'
df['check'] = df['Document'].apply(fn)
给我:
Document Type check
0 a 7 N
1 1 E Y
2 a Y N
3 6 6 Y
4 7 C Y
5 N 9 N
只是想澄清一下,当apply
在系列上使用时,您应该编写接受标量值的函数。apply
但是,当在DataFrame上使用时,这些函数应接受完整的列(axis=0
默认时)或完整的行(时axis=1
)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句