使用apply()函数在pandas.DataFrame中创建新列
我有一个叫做 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
创建两个额外的列,名字分别叫 A1
和 B2
(比如 A1 = str(A) + str(1)
),并且要把它们的值乘以二。请问可以用 DataFrame.apply()
或其他方法来实现吗?
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
,除非真的需要。
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)
。