Pandas在多列上的数据帧上应用函数

时间:2018-03-20 08:49:12

标签: python pandas

当我运行以下代码时,我得到一个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']))

3 个答案:

答案 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列作为输入的函数。