繁体   English   中英

按列将函数应用于Pandas数据框

[英]Applying function to Pandas dataframe by column

我有一个函数想应用于熊猫数据框的某些列。 因此,与其明确声明列,不如我要动态选择所需的列,然后调用该函数,例如

如何实现类似:

for column in dataframe:
    if column.name != 'manager':
       apply function():

我认为您可以首先通过list comprehension找到所有列,然后apply func

import pandas as pd

df = pd.DataFrame({'A':[1,2,3],
                   'B':[4,5,6],
                   'C':[7,8,9],
                   'D':[1,3,5],
                   'E':[5,3,6],
                   'F':[7,4,3]})

print (df)
   A  B  C  D  E  F
0  1  4  7  1  5  7
1  2  5  8  3  3  4
2  3  6  9  5  6  3

cols = [col for col in  df.columns if col != 'B']
print (cols)
['A', 'C', 'D', 'E', 'F']

def func(x):
    return x + 1

df[cols] = df[cols].apply(func)

print (df)
   A  B   C  D  E  F
0  2  4   8  2  6  8
1  3  5   9  4  4  5
2  4  6  10  6  7  4

布尔索引的另一种解决方案:

cols = df.columns[df.columns != 'B']
print (cols)
Index(['A', 'C', 'D', 'E', 'F'], dtype='object')

使用drop()apply()

df.drop('manager', axis=1).apply(func)

演示:

In [115]: df
Out[115]:
   a  b  c
0  4  5  3
1  6  6  6
2  3  4  1
3  2  1  6
4  8  8  1

In [116]: df.drop('b', axis=1)
Out[116]:
   a  c
0  4  3
1  6  6
2  3  1
3  2  6
4  8  1

In [117]: def func(i):
   .....:     return i ** 2
   .....:

In [118]: df.drop('b', axis=1).apply(func)
Out[118]:
    a   c
0  16   9
1  36  36
2   9   1
3   4  36
4  64   1

暂无
暂无

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

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