简体   繁体   English

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

[英]Apply a function to range of multiple columns in a Data frame

你能告诉我如何使用像x['D'] :x['A']这样的列范围,而不是将所有列作为参数在下面一一列出来运行吗?

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

Were you looking for something like this?你在寻找这样的东西吗?

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

If you need the parameters to be a list of columns and not a dataframe:如果您需要参数是列列表而不是数据框:

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

You can try do something like this:你可以尝试做这样的事情:

df.loc[:,'F']=df.apply(lambda x: my_function(*df.columns.difference(['F'])), axis=1)

if your columns are in order you can slice like this:如果你的列是有序的,你可以像这样切片:

df.loc[:,'F']=df.apply(lambda x: my_function(*df.iloc[:,1:4])), axis=1)

Say you have a dataframe like this假设你有一个这样的数据框

    E   D   C   B   A
______________________

0   8   9   9   6   1
1   8   4   1   4   3
2   0   4   6   9   3

And you want to apply some function func to columns D to A , you can try并且您想将一些函数func应用于列DA ,您可以尝试

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

df.apply(func, axis=1)

output输出

0    25
1    12
2    22
dtype: int64

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM