gpt4 book ai didi

python - 在 Pandas/Python 中分割数据

转载 作者:太空宇宙 更新时间:2023-11-03 17:21:58 24 4
gpt4 key购买 nike

我是 Python 和 Pandas 的新手,所以请耐心等待。

我有一个大数据,如下所示:

1       E                    1                  NaN
2 T 2004-09-21 01:15:53 NaN
3 U 30 NaN
4 N 32 NaN
5 V 1 2004-09-14 16:26:00
6 V -1 2004-09-14 16:53:00
7 V 1 2004-09-14 17:08:00
...................................................
18 E 1 Nan
19 T 2004-10-21 02:13:43 Nan
20 U 35 Nan
21 N 40 Nan
22 V 1 2004-10-19 14:50:00
23 V 1 2004-10-20 15:31:00
24 V 1 2004-10-21 13:49:00
25 V 1 2004-10-21 20:57:00
26 V 1 2004-10-21 22:11:00
...................................................

如何将其拆分为单独的小数据集,例如 x(i) ,其中 i=0,...,N ,例如 x(0) 看起来像:

 1       E                    1                  NaN
2 T 2004-09-21 01:15:53 NaN
3 U 30 NaN
4 N 32 NaN
5 V 1 2004-09-14 16:26:00
6 V -1 2004-09-14 16:53:00
7 V 1 2004-09-14 17:08:00
...................................................
17 V 1 2004-09-16 12:38:01

我想我应该使用一些循环命令从 EE,但我不太确定如何将其划分为单独的集合。

最佳答案

您可以在此处使用groupby,使用compare-cumsum-groupby模式(这里假设带有Es的列称为“字母”):

>>> grouped = df.groupby((df["letter"] == "E").cumsum())
>>> frames = [g for k,g in grouped]
>>> for frame in frames:
... print(frame)
... print("--")
...
letter
0 E
1 T
2 U
--
letter
3 E
4 M
--
letter
5 E
--
letter
6 E
--
<小时/>

这是有效的,因为我们可以将所有内容与 E 进行比较,创建一系列 bool 值:

>>> df["letter"] == "E"
0 True
1 False
2 False
3 True
4 False
5 True
6 True
Name: letter, dtype: bool

然后如果我们将其累加起来,我们会得到

>>> (df["letter"] == "E").cumsum()
0 1
1 1
2 1
3 2
4 2
5 3
6 4
Name: letter, dtype: int32

其中每个新组都有自己的编号。阅读split-apply-combine文档的部分可能是一个好主意 - 如果您想要在组上执行的操作已受支持,您甚至可能不需要将所有内容分解为子帧。

关于python - 在 Pandas/Python 中分割数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33055718/

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