gpt4 book ai didi

python - 如何根据连续索引拆分 DataFrame?

转载 作者:太空狗 更新时间:2023-10-30 01:56:22 25 4
gpt4 key购买 nike

我有一个带有非连续索引的 DataFrame 'work',这是一个例子:

Index Column1 Column2
4464 10.5 12.7
4465 11.3 12.8
4466 10.3 22.8
5123 11.3 21.8
5124 10.6 22.4
5323 18.6 23.5

我需要从此 DataFrame 中提取仅包含索引连续的行的新 DataFrame,因此在这种情况下,我的目标是获取

DF_1.index=[4464,4465,4466]
DF_2.index=[5123,5124]
DF_3.index=[5323]

维护所有列。

谁能帮帮我?

最佳答案

分组方式

你可以制作一个完美的“连续”数组

np.arange(10)

array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

如果我要从单调递增的索引中减去它,则只有那些“连续”的索引成员会显示为相等。这是建立分组依据的键的聪明方法。

list_of_df = [d for _, d in df.groupby(df.index - np.arange(len(df)))]

并打印每一个来证明

print(*list_of_df, sep='\n\n')

Column1 Column2
Index
4464 10.5 12.7
4465 11.3 12.8
4466 10.3 22.8

Column1 Column2
Index
5123 11.3 21.8
5124 10.6 22.4

Column1 Column2
Index
5323 18.6 23.5

np.split

您可以使用 np.flatnonzero 来识别哪里的差异不等于 1 并避免使用 cumsumgroupby

list_of_df = np.split(df, np.flatnonzero(np.diff(df.index) != 1) + 1)

证明

print(*list_of_df, sep='\n\n')

Column1 Column2
Index
4464 10.5 12.7
4465 11.3 12.8
4466 10.3 22.8

Column1 Column2
Index
5123 11.3 21.8
5124 10.6 22.4

Column1 Column2
Index
5323 18.6 23.5

关于python - 如何根据连续索引拆分 DataFrame?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56257329/

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