当我运行以下代码时,我得到一个KeyError :(' a','发生在索引a')。如何在不遇到此问题的情况下在Dataframe上应用此功能或类似功能?
运行python3.6,pandas v0.22.0
import numpy as np
import pandas as pd
def add(a, b):
return a + b
df = pd.DataFrame(np.random.randn(3, 3),
columns = ['a', 'b', 'c'])
df.apply(lambda x: add(x['a'], x['c']))
答案 0 :(得分:3)
我认为apply
中的行需要参数axis=1
:
轴:{0或'索引',1或'列'},默认为0
0 或索引:将函数应用于每列
1 或列:将功能应用于每一行
df = df.apply(lambda x: add(x['a'], x['c']), axis=1)
print (df)
0 -0.802652
1 0.145142
2 -1.160743
dtype: float64
答案 1 :(得分:0)
您甚至不需要申请,您可以直接添加列。输出将是一系列的一系列:
df = df['a'] + df['c']
例如:
df = pd.DataFrame({'a': [1, 2], 'b': [3, 4], 'c': [5, 6]})
df = df['a'] + df['c']
print(df)
# 0 6
# 1 8
# dtype: int64
答案 2 :(得分:0)
你可以试试这个
import numpy as np
import pandas as pd
def add(df):
return df.a + df.b
df = pd.DataFrame(np.random.randn(3, 3),
columns = ['a', 'b', 'c'])
df.apply(add, axis =1)
当然,您可以替换任何将df列作为输入的函数。