gpt4 book ai didi

python - Pandas:将数据帧填充到最大行长度

转载 作者:行者123 更新时间:2023-12-01 01:08:48 24 4
gpt4 key购买 nike

我有如下数据框:

df = pd.DataFrame({"id": [100, 200, 200, 300, 300, 300], "val1": [1.5, 2.5, 4.5, np.nan, 6.5, np.nan], "val2": [9.5, 7.5, 8.5, 3.5, np.nan, np.nan]})

我想要实现的是将每个组进行零填充(假设数据帧按id分组),直到所有组的最大行数。上述数据帧的每个 id 的最大行数为 3,因此生成的数据帧应如下所示:

df_true = pd.DataFrame({"id": [100, 100, 100, 200, 200 ,200, 300, 300, 300], "val1": [1.5, 0, 0, 2.5, 4.5, 0, np.nan, 6.5, np.nan], "val2": [9.5, 0, 0, 7.5, 8.5, 0, 3.5, np.nan, np.nan]})

有人能指出我如何实现这一目标的正确方向吗?

最佳答案

因此,我们使用带有 id 的 cumcount,然后使用 stackunstack

df['new']=df.groupby('id').cumcount()
df_true=df.set_index(['id','new']).unstack(fill_value=0).stack(dropna=False).reset_index('id')
df_true
Out[908]:
id val1 val2
new
0 100 1.5 9.5
1 100 0.0 0.0
2 100 0.0 0.0
0 200 2.5 7.5
1 200 4.5 8.5
2 200 0.0 0.0
0 300 NaN 3.5
1 300 6.5 NaN
2 300 NaN NaN

关于python - Pandas:将数据帧填充到最大行长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55068265/

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