pandas DataFrame,如何将函数应用于特定列?

Goi*_*Way 17 python pandas

我已经阅读了DataFrame.apply的文档

DataFrame.apply(func,axis = 0,broadcast = False,raw = False,reduce = None,args =(),**kwds)沿DataFrame的输入轴应用函数.

那么,如何将函数应用于特定列?

In [1]: import pandas as pd
In [2]: data = {'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]}
In [3]: df = pd.DataFrame(data)
In [4]: df
Out[4]: 
   A  B  C
0  1  4  7
1  2  5  8
2  3  6  9
In [5]: def addOne(v):
...:        v += 1
...:        return v
...: 
In [6]: df.apply(addOne, axis=1)
Out[6]: 
   A  B   C
0  2  5   8
1  3  6   9
2  4  7  10
Run Code Online (Sandbox Code Playgroud)

我想将addOne添加到每个值中df['A'],而不是所有列中.我怎么能这样做DataFrame.apply.

感谢帮助!

su7*_*u7k 29

答案是,

df['A'] = df['A'].map(addOne)
Run Code Online (Sandbox Code Playgroud)

也许你会更好地了解差异map,applymap,apply.

但如果你坚持使用apply,你可以尝试如下.

def addOne(v):
    v['A'] += 1
    return v

df.apply(addOne, axis=1)
Run Code Online (Sandbox Code Playgroud)

  • @dondapati 当然,您可以简单地在 addOne 函数中添加 v['B'] += 1 。当轴 = 1 时,Pandas 应用函数将每一行作为 v。 (2认同)

小智 10

一个简单的方法是:

df['A'] = df['A'].apply(lambda x: x+1)
Run Code Online (Sandbox Code Playgroud)