如何使用Python或Pandas提取空值之间的行

如何使用Python或Pandas提取空值之间的行,python,pandas,numpy,dataframe,Python,Pandas,Numpy,Dataframe,我有一个csv或一堆csv数据 Datetime 89200000 89300000 ... 106200000 106300000 107900000 0 NaN NaN C202 ... C3A4 NaN C09C 1 NaN NaN BBC R2 ... Heart NaN Sangam 2

我有一个csv或一堆csv数据

          Datetime 89200000 89300000  ...  106200000  106300000 107900000
0                   NaN      NaN     C202  ...       C3A4        NaN      C09C
1                   NaN      NaN   BBC R2  ...      Heart        NaN    Sangam
2  2019-09-09T00:05:00Z      NaN       72  ...         64        NaN        37
3  2019-09-09T00:11:00Z      NaN       72  ...         64        NaN        36
4  2019-09-09T00:17:00Z      NaN       72  ...         64        NaN        36
5                   NaN      NaN     C202  ...       C3A4        NaN      C09C
6                   NaN      NaN   BBC R2  ...      Heart        NaN    Sangam
7  2019-09-09T00:23:00Z      NaN       72  ...         64        NaN        36
8                   NaN      NaN     C202  ...       C3A4        NaN      C09C
9                   NaN      NaN   BBC R2  ...      Heart        NaN    Sangam
我需要提取行,以便得到以下结果-

Datetime 89200000 89300000  ...  106200000  106300000 107900000
0                   NaN      NaN     C202  ...       C3A4        NaN      C09C
1                   NaN      NaN   BBC R2  ...      Heart        NaN    Sangam
2  2019-09-09T00:05:00Z      NaN       72  ...         64        NaN        37
3  2019-09-09T00:11:00Z      NaN       72  ...         64        NaN        36
4  2019-09-09T00:17:00Z      NaN       72  ...         64        NaN        36
接着是

Datetime 89200000 89300000  ...  106200000  106300000 107900000
5                   NaN      NaN     C202  ...       C3A4        NaN      C09C
6                   NaN      NaN   BBC R2  ...      Heart        NaN    Sangam
7  2019-09-09T00:23:00Z      NaN       72  ...         64        NaN        36
8                   NaN      NaN     C202  ...       C3A4        NaN      C09C
9                   NaN      NaN   BBC R2  ...      Heart        NaN    Sangam
对于文件中的所有行,依此类推

我对蟒蛇法或熊猫法都很满意,并且已经看过了各种各样的例子,但是到目前为止还不能解决这个难题。如果您需要更多信息,请帮助并让我知道。 谢谢

使用++ 根据上述标准创建组。然后,您可以使用以下方法获取它们并将它们保存在列表中:

这将创建一个数据帧列表,该列表将是您要查找的数据帧

如果您指定要保存结果数据帧的位置,我很乐意修改我的答案以帮助您

注意:我认为您需要根据Datetime列的NaN来进行区分。如果您想基于另一列进行此操作,只需更改此标签

使用++ 根据上述标准创建组。然后,您可以使用以下方法获取它们并将它们保存在列表中:

这将创建一个数据帧列表,该列表将是您要查找的数据帧

如果您指定要保存结果数据帧的位置,我很乐意修改我的答案以帮助您


注意:我认为您需要根据Datetime列的NaN来进行区分。如果您想基于另一列进行此操作,只需更改此标签

,正如我所理解的,您希望将数据帧转换为 原始数据帧的数据帧段

每个段应在非NaT值序列的末尾结束 下面的NaT值序列应该是 下一节

要提供这种切割,请按如下方式对数据帧进行分组:

gr = df.groupby((df['Datetime'].isna() & df['Datetime']\
    .shift().notna()).cumsum())
然后将您的列表生成为:

dfs = [ grp for _, grp in gr ]
因此,我的解决方案将您的数据帧分为三个关键部分== [0..4]、[5..7]和[8..9],而另一种解决方案将其切割为
十段肯定有问题。

据我所知,您希望将数据帧转换为 原始数据帧的数据帧段

每个段应在非NaT值序列的末尾结束 下面的NaT值序列应该是 下一节

要提供这种切割,请按如下方式对数据帧进行分组:

gr = df.groupby((df['Datetime'].isna() & df['Datetime']\
    .shift().notna()).cumsum())
然后将您的列表生成为:

dfs = [ grp for _, grp in gr ]
因此,我的解决方案将您的数据帧分为三个关键部分== [0..4]、[5..7]和[8..9],而另一种解决方案将其切割为
这里肯定有问题。

谢谢-刚刚尝试了您的解决方案。它只需稍加修改即可工作,如下groups=df['Datetime'].isna&df['Datetime'].shift.notna.cumsum grouper=df.groupbygroups dfs=[g for ug,g in grouper]我借用了下面@Valdi_Bo提供的解决方案的最后一行,否则结果不是必需的。谢谢…谢谢-刚刚尝试了你的解决方案。它只需稍加修改即可工作,如下groups=df['Datetime'].isna&df['Datetime'].shift.notna.cumsum grouper=df.groupbygroups dfs=[g for ug,g in grouper]我借用了下面@Valdi_Bo提供的解决方案的最后一行,否则结果不是必需的。谢谢你…谢谢!它工作起来,大约在6秒钟内完成工作……这很好!:谢谢它工作起来,大约在6秒钟内完成工作……这很好!: