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

pandas DataFrame, how to apply function to a specific column?

我已经阅读了数据框架的文档。应用

DataFrame.apply(func, axis=0, broadcast=False, raw=False, reduce=None, args=(), **kwds)?
Applies function along input axis of DataFrame.

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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

我想给EDOCX1中的每个值加一个,不是所有列。我怎么能用DataFrame.apply做到这一点呢?

谢谢你的帮助!


答案是,

1
df['A'] = df['A'].map(addOne)

也许你最好了解一下mapapplymapapply的区别。

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

1
2
3
4
5
def addOne(v):
    v['A'] += 1
    return v

df.apply(addOne, axis=1)


一个简单的方法是:

1
df['A'] = df['A'].apply(lambda x: x+1)