[英]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')
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.