我有一个数据框
2019Q4 2020Q4
0 20 10
1 56 15
2 63 14
从这个数据框我想创建
2019Q4 2020Q4 year2019 year2020
0 20 10 20 10
1 56 15 56 15
2 63 14 63 14
请帮助我如何在python中实现
rename
与lambda函数一起使用,用于前4个值,添加前缀by DataFrame.add_prefix
,然后添加至original by DataFrame.join
:
df = df.join(df.rename(columns=lambda x: x[:4]).add_prefix('year'))
print (df)
2019Q4 2020Q4 year2019 year2020
0 20 10 20 10
1 56 15 56 15
2 63 14 63 14
如果可能的话,同一年的多列:
print (df)
2019Q4 2020Q4 2020Q3
0 20 10 3
1 56 15 5
2 63 14 15
df1 = df.join(df.rename(columns=lambda x: x[:4]).add_prefix('year'))
print (df1)
2019Q4 2020Q4 2020Q3 year2019 year2020 year2020
0 20 10 3 20 10 3
1 56 15 5 56 15 5
2 63 14 15 63 14 15
如果选择一个列,则获取所有列,因为重复:
print (df1['year2020'])
year2020 year2020
0 10 3
1 15 5
2 14 15
可能的解决方案是聚合的,例如通过sum
:
df1 = df.join(df.groupby(lambda x: x[:4], axis=1).sum().add_prefix('year'))
print (df1)
2019Q4 2020Q4 2020Q3 year2019 year2020
0 20 10 3 20 13
1 56 15 5 56 20
2 63 14 15 63 29
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句