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

Python 使用apply()函数在pandas.DataFrame中创建新列,python,pandas,Python,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

我有一个数据框,如:

          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

因此,我需要根据列
A
B
(比如name
A1=str(A)+str(1)
)乘以2,创建两个名为
A1
B2
的附加列。是否可以使用
DataFrame.apply()
或其他构造来执行此操作

您可以使用
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(您的_函数)

我会跳过
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的解决方案那样优雅。但无论出于何种原因,除非我真的需要,否则我都会避免应用。

通过避免加入
这也有一个好处,即不必重新分配数据帧。非常感谢!这真的很有帮助!非常感谢您的回答!