Я пытаюсь применить функцию к каждому столбцу в кадре данных, когда я пытаюсь сделать это только для одного фиксированного имени столбца, это работает. Я пытался сделать это для каждого столбца, но когда я пытаюсь передать имя столбца в качестве аргумента функции, я получаю сообщение об ошибке.
Как правильно передать аргументы для применения функции к фрейму данных?
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