【发布时间】:2023-04-08 17:29:02
【问题描述】:
我正在尝试将函数应用于数据框中的每一列,当我尝试仅对单个固定列名执行此操作时,它可以工作。我尝试在每一列上都这样做,但是当我尝试在函数中将列名作为参数传递时,我得到了一个错误。
如何正确传递参数以在数据框上应用函数?
def result(row,c):
if row[c] >=0 and row[c] <=1:
return 'c'
elif row[c] >1 and row[c] <=2:
return 'b'
else:
return 'a'
cols = list(df.columns.values)
for c in cols
df[c] = df.apply(result, args = (c), axis=1)
TypeError: ('result() takes exactly 2 arguments (21 given)', u'occurred at index 0')
输入数据帧格式:
d = {'c1': [1, 2, 1, 0], 'c2': [3, 0, 1, 2]}
df = pd.DataFrame(data=d)
df
c1 c2
0 1 3
1 2 0
2 1 1
3 0 2
【问题讨论】:
-
这是一个虚拟函数还是实际函数?如果实际,我认为您不需要在这里申请。如果您可以分享一些预期的数据,我们可以提供帮助