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
(比如nameA1=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的解决方案那样优雅。但无论出于何种原因,除非我真的需要,否则我都会避免应用。通过避免加入
这也有一个好处,即不必重新分配数据帧。非常感谢!这真的很有帮助!非常感谢您的回答!