gpt4 book ai didi

Python 将缺失的行添加到数据框

转载 作者:行者123 更新时间:2023-12-05 02:01:19 27 4
gpt4 key购买 nike

我有一个数据框,有时可能会有不完整的数据。例如下面这个停止在 22 点而不是 23 点

           Date  Hour  Interval     Source         ID  Number of Messages
0 2020-05-19 0 0 1 413379290 23
1 2020-05-19 0 15 1 413379290 36
2 2020-05-19 0 30 1 413379290 31
3 2020-05-19 0 45 1 413379290 14
4 2020-05-19 1 0 1 413379290 3
.. ... ... ... ... ... ...
183 2020-05-20 21 45 1 413379290 6
184 2020-05-20 22 0 1 413379290 8
185 2020-05-20 22 15 1 413379290 4
186 2020-05-20 22 30 1 413379290 6
187 2020-05-20 22 45 1 413379290 9

如何使用 pandas 使其看起来像这样?

           Date  Hour  Interval     Source         ID  Number of Messages
0 2020-05-19 0 0 1 413379290 23
1 2020-05-19 0 15 1 413379290 36
2 2020-05-19 0 30 1 413379290 31
3 2020-05-19 0 45 1 413379290 14
4 2020-05-19 1 0 1 413379290 3
.. ... ... ... ... ... ...
183 2020-05-20 21 45 1 413379290 6
184 2020-05-20 22 0 1 413379290 8
185 2020-05-20 22 15 1 413379290 4
186 2020-05-20 22 30 1 413379290 6
187 2020-05-20 22 45 1 413379290 9
188 2020-05-20 23 0 1 413379290 NaN
189 2020-05-20 23 15 1 413379290 NaN
190 2020-05-20 23 30 1 413379290 NaN
191 2020-05-20 23 45 1 413379290 NaN

最佳答案

您可以使用 reindex 并创建缺失的小时数,您可以使用所有列中的现有值(消息数除外),创建一个 MultiIndex.from_frame,然后使用 MultiIndex.from_product 重新创建所有更改 Hour by range(24) 中现有值的值。然后在数据帧上,set_indexreindex 所有值

# all except the one you want nan in
cols = ['Date','Hour', 'Interval', 'Source','ID']
#create the multiindex with all values
new_idx = (
pd.MultiIndex.from_product(
[lv if col != 'Hour' else range(24) #replace existing values by range 0 to 23
for col, lv in zip(cols, pd.MultiIndex.from_frame(df[cols]).levels)
], names=cols)
)
#reindex the original df, you can reassign to same df if you want
new_df = (
df.set_index(cols)
.reindex(new_idx)
.reset_index()
)

关于Python 将缺失的行添加到数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66679829/

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