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

3

I have a pandas DataFrame like:

          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 (比如说把名字 A1 = str(A) + str(1)) 做乘2的操作后,再添加两个新的列,分别为 A1B2。请问是否可以使用 DataFrame.apply() 或其他方法实现?

2个回答

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.apply(your_function)来替换df*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,除非我真的需要它。


通过避免使用 join,这也有一个很好的优点,就是不必重新分配数据帧。 - Zelazny7

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接