使用apply()函数在pandas.DataFrame中创建新列

3 投票
2 回答
3489 浏览
提问于 2025-04-17 14:11

我有一个叫做 pandas 的数据框,里面的数据长这样:

          A    B  
'2010-01-01'  10  20   
'2010-02-01'  20  30  
'2010-03-01'  30  10  

我想对每一列应用一个函数,然后在这个数据框里创建一些新的列,并给它们起个特别的名字。

               A   B A1 B1  
'2010-01-01'  10  20 20 40  
'2010-02-01'  20  30 40 60  
'2010-03-01'  30  10 60 20

所以我需要根据列 AB 创建两个额外的列,名字分别叫 A1B2(比如 A1 = str(A) + str(1)),并且要把它们的值乘以二。请问可以用 DataFrame.apply() 或其他方法来实现吗?

2 个回答

3

我会跳过 apply 方法,直接定义列。

import pandas as pd
df = pd.DataFrame({"A": [10,20,30], "B": [20, 30, 10]})
for col in df.columns:
    df[col+"1"] = df[col] * 2

这虽然没有DSM的解决方案那么优雅,但出于某种原因,我尽量不使用 apply,除非真的需要。

8

你可以用 join 来合并数据:

>>> import pandas as pd
>>> df = pd.DataFrame({"A": [10,20,30], "B": [20, 30, 10]})
>>> df
    A   B
0  10  20
1  20  30
2  30  10
>>> df * 2
    A   B
0  20  40
1  40  60
2  60  20
>>> df.join(df*2, rsuffix='1')
    A   B  A1  B1
0  10  20  20  40
1  20  30  40  60
2  30  10  60  20

在这里,如果你愿意,可以把 df*2 替换成 df.apply(your_function)

撰写回答