gpt4 book ai didi

python - 在 Pandas 的分组数据中插入值为零的缺失记录

转载 作者:行者123 更新时间:2023-11-28 22:11:13 24 4
gpt4 key购买 nike

我有一个数据框df:

import pandas as pd
s = {'id': [243,243, 243, 243, 443,443,443, 332,334,332,332, 333],
'col':[1,1,1,1,1,1,1,2,2,2,2,2],
'st': [1,3,5,9,12, 18,23, 1,2,4,8,14],
'value':[2.4, 3.8, 3.7, 5.6, 1.2, 0.2, 2.1, 2.0, 2.5, 3.4, 1.2, 2.4]}
df = pd.DataFrame(s)

看起来像:

id      col  st  value
0 243 1 1 2.4
1 243 1 3 3.8
2 243 1 5 3.7
3 243 1 9 5.6
4 443 1 12 1.2
5 443 1 18 0.2
6 443 1 23 2.1
7 332 2 1 2.0
8 334 2 2 2.5
9 332 2 4 3.4
10 332 2 8 1.2
11 333 2 14 2.4

数据有两组 col 1 和 2(在实际数据中有很多组)。我想根据 st 列包含缺失的记录。并且值必须保持为 0。

我的输出必须是这样的

id  col  st  value
243 1 1 2.4
0 1 2 0
243 1 3 3.8
0 1 4 0
243 1 5 3.7

等等

332    2   1    2.0
334 2 2 2.5
0 2 3 0
332 2 4 3.4
0 2 5 0
0 2 6 0
0 2 7 0
332 2 8 1.2

我如何在 Pandas 中做到这一点?

最佳答案

使用DataFrame.reindex每组 GroupBy.apply范围:

df = (df.set_index('st')
.groupby('col')['id','value']
.apply(lambda x: x.reindex(range(x.index.min(), x.index.max() + 1), fill_value=0))
.reset_index()
)

print (df)
col st id value
0 1 1 243 2.4
1 1 2 0 0.0
2 1 3 243 3.8
3 1 4 0 0.0
4 1 5 243 3.7
5 1 6 0 0.0
6 1 7 0 0.0
7 1 8 0 0.0
8 1 9 243 5.6
9 1 10 0 0.0
10 1 11 0 0.0
11 1 12 443 1.2
12 1 13 0 0.0
13 1 14 0 0.0
14 1 15 0 0.0
15 1 16 0 0.0
16 1 17 0 0.0
17 1 18 443 0.2
18 1 19 0 0.0
19 1 20 0 0.0
20 1 21 0 0.0
21 1 22 0 0.0
22 1 23 443 2.1
23 2 1 332 2.0
24 2 2 334 2.5
25 2 3 0 0.0
26 2 4 332 3.4
27 2 5 0 0.0
28 2 6 0 0.0
29 2 7 0 0.0
30 2 8 332 1.2
31 2 9 0 0.0
32 2 10 0 0.0
33 2 11 0 0.0
34 2 12 0 0.0
35 2 13 0 0.0
36 2 14 333 2.4

关于python - 在 Pandas 的分组数据中插入值为零的缺失记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56006459/

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