能告诉我如何使用列范围
x['D'] :x['A']
而不是将所有列都列为要在下面逐个函数的参数?
df.loc[:,'F']=df.apply(lambda x: my_function(x['D'],x['C'],x['B'],x['A']), axis=1)
答案 0 :(得分:0)
您是否正在寻找类似的东西?
df.loc[:,'F']=df.apply(lambda x: my_function(x.loc['D':'A']), axis=1)
如果您需要参数是列列表而不是数据框:
df.loc[:,'F']=df.apply(lambda x: my_function([x for x in x.loc['D':'A']]), axis=1)
答案 1 :(得分:0)
您可以尝试执行以下操作:
df.loc[:,'F']=df.apply(lambda x: my_function(*df.columns.difference(['F'])), axis=1)
如果您的列按顺序排列,则可以像这样进行切片:
df.loc[:,'F']=df.apply(lambda x: my_function(*df.iloc[:,1:4])), axis=1)
答案 2 :(得分:0)
假设您有一个这样的数据框
E D C B A
______________________
0 8 9 9 6 1
1 8 4 1 4 3
2 0 4 6 9 3
您想将某些功能func
应用于列D
至A
的情况,可以尝试
def func(x):
return sum(x[1:])
df.apply(func, axis=1)
输出
0 25
1 12
2 22
dtype: int64