将函数应用于数据框中的多列范围

时间:2019-12-28 20:28:32

标签: python pandas function dataframe arguments

能告诉我如何使用列范围 x['D'] :x['A']而不是将所有列都列为要在下面逐个函数的参数?

df.loc[:,'F']=df.apply(lambda x: my_function(x['D'],x['C'],x['B'],x['A']), axis=1)

3 个答案:

答案 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应用于列DA的情况,可以尝试

def func(x):
    return sum(x[1:])

df.apply(func, axis=1)

输出

0    25
1    12
2    22
dtype: int64