我有一个像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
因此,我需要根据列A1
和B2
(如名称A
)再加上名称为B
和A1 = str(A) + str(1)
的两列,方法是乘以二。是否可以使用DataFrame.apply()
或其他结构执行此操作?
答案 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
,除非我真的需要它。