gpt4 book ai didi

python - 如何动态创建列名?当我们分组并对多列求和时?

转载 作者:行者123 更新时间:2023-12-03 18:39:25 28 4
gpt4 key购买 nike

我正在尝试动态创建一个添加了一些后缀的列名。我可以在 for 循环中完成,但我认为它会效率低下。有没有办法动态地做到这一点。

from pandas import Timestamp
import pandas as pd
df = pd.DataFrame({'B': range(1,6),'A':['A','A','A','B','B'],'D':[2,3,4,5,6]})

df['C'] = [Timestamp('20130101 09:00:00'),
Timestamp('20130101 09:00:02'),
Timestamp('20130102 09:00:03'),
Timestamp('20130101 09:00:05'),
Timestamp('20130101 09:00:06')]
我可以分多个步骤完成,例如:
df['D_2days']=df.groupby('A').rolling('4d',on='C')['D'].sum().values
df['B_2days']=df.groupby('A').rolling('4d',on='C')['B'].sum().values
有没有办法一次性完成。我有 1000 多列需要求和,循环可能不是一个好主意。
谢谢,
山姆

最佳答案

我们可以通过传递要计算滚动总和的列名列表,对多列进行分组和计算滚动总和,然后在添加所需前缀后将计算出的滚动总和分配给数据帧内的列

c = pd.Index(['B', 'D'])
df[c + '_2days'] = df.groupby('A', sort=False).rolling('4d',on='C')[c].sum().values
   B  A  D                   C  B_2days  D_2days
0 1 A 2 2013-01-01 09:00:00 1.0 2.0
1 2 A 3 2013-01-01 09:00:02 3.0 5.0
2 3 A 4 2013-01-02 09:00:03 6.0 9.0
3 4 B 5 2013-01-01 09:00:05 4.0 5.0
4 5 B 6 2013-01-01 09:00:06 9.0 11.0

关于python - 如何动态创建列名?当我们分组并对多列求和时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67574792/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com