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

时间:2013-01-30 11:19:22

标签: python pandas

我有一个像pandas DataFrame:

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

我需要为每个列应用一些函数,并在此DataFrame中使用特殊名称创建新列。

               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

因此,我需要根据列A1B2(如名称A)再加上名称为BA1 = str(A) + str(1)的两列,方法是乘以二。是否可以使用DataFrame.apply()或其他结构执行此操作?

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分: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,除非我真的需要它。