gpt4 book ai didi

python - 与两列中的 ID 关联的所有值的滚动总和

转载 作者:太空宇宙 更新时间:2023-11-04 04:28:37 25 4
gpt4 key购买 nike

基本上,我希望它对两列 (['id1','id2]) 中的所有 ID 进行分组,并从 ['value1','值2']

df:

id1     id2     value1    value2     
-----------------------------------
a b 10 5
c a 5 10
b c 0 0
c d 2 1
d a 10 20
a c 5 10
b a 10 5
a b 5 2
c a 2 5
d b 5 2

df (if df.id = 'a') -- 只是为了简化我只用 id 'a' 显示:

id1     id2     value1    value2    a.rolling.sum(2)  
-----------------------------------------------------
a b 10 5 NaN
c a 5 10 20
d a 10 20 30
a c 5 10 25
b a 10 5 10
a b 5 2 10
c a 2 5 10

期望 df(包括列 ['id1','id2'] 中的所有 id):

id1     id2     value1    value2       a.rolling.sum(2)     b.rolling.sum(2)      c.rolling.sum(2)
---------------------------------------------------------------------------------------------
a b 10 5 NaN NaN NaN
c a 5 10 20 NaN NaN
b c 0 0 NaN 5 5
c d 2 1 NaN NaN 2
d a 10 20 30 NaN NaN
a c 5 10 25 NaN 12
b a 10 5 10 10 NaN
a b 5 2 10 12 NaN
c a 2 5 10 NaN 12
d b 5 2 NaN 4 NaN

我最好需要一个 groupby 函数来分配与 x.rolling(2) 相关的所有 id,因为原始数据集有数百个 id 需要计算。

最佳答案

重新配置

i = df.filter(like='id')
i.columns = [i.columns.str[:2], i.columns.str[2:]]

v = df.filter(like='va')
v.columns = [v.columns.str[:5], v.columns.str[5:]]

d = i.join(v)

d

id value
1 2 1 2
0 a b 10 5
1 c a 5 10
2 b c 0 0
3 c d 2 1
4 d a 10 20
5 a c 5 10
6 b a 10 5
7 a b 5 2
8 c a 2 5
9 d b 5 2

随机播放内容

def modified_roll(x):
return x.dropna().rolling(2).sum()


extra_bit = d.stack().set_index('id', append=True).unstack().value \
.apply(modified_roll).groupby(level=0).first()

extra_bit

id a b c d
0 NaN NaN NaN NaN
1 20.0 NaN NaN NaN
2 NaN 5.0 5.0 NaN
3 NaN NaN 2.0 NaN
4 30.0 NaN NaN 11.0
5 25.0 NaN 12.0 NaN
6 10.0 10.0 NaN NaN
7 10.0 12.0 NaN NaN
8 10.0 NaN 12.0 NaN
9 NaN 4.0 NaN 15.0

加入

df.join(extra_bit)

id1 id2 value1 value2 a b c d
0 a b 10 5 NaN NaN NaN NaN
1 c a 5 10 20.0 NaN NaN NaN
2 b c 0 0 NaN 5.0 5.0 NaN
3 c d 2 1 NaN NaN 2.0 NaN
4 d a 10 20 30.0 NaN NaN 11.0
5 a c 5 10 25.0 NaN 12.0 NaN
6 b a 10 5 10.0 10.0 NaN NaN
7 a b 5 2 10.0 12.0 NaN NaN
8 c a 2 5 10.0 NaN 12.0 NaN
9 d b 5 2 NaN 4.0 NaN 15.0

关于python - 与两列中的 ID 关联的所有值的滚动总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53075436/

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