首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在空白行上拆分Pandas DataFrame

问在空白行上拆分Pandas DataFrame
EN

Stack Overflow用户
提问于 2017-11-16 00:07:17
回答 1查看 6.3K关注 0票数 4

我有一个大的数据文件,我需要在空行上分割。

下面是一个简化的DataFrame示例:

代码语言:javascript
复制
    A   B   C
0   1   0   International
1   1   1   International
2   NaN 2   International
3   1   3   International
4   1   4   International
5   8   0   North American
6   8   1   North American
7   8   2   North American
8   8   3   North American
9   NaN NaN NaN
10  1   0   Internal
11  1   1   Internal
12  6   0   East
13  6   1   East
14  6   2   East
...

如您所见,第9行为空白。我需要做的是取0行到8行,并将它们放在不同的dataframe中,并将行10放到下一个空白中,以便在最后有几个数据文件。注意,在寻找空白行时,我需要整行为空白。

下面是我用来查找空白的代码:

代码语言:javascript
复制
def find_breaks(df):
    df_breaks = df[(df.loc[:,['A','B','C']].isnull()).any(axis=1)]
    print(df_breaks.index)

当我在简化的DF上测试它时,这段代码可以工作,但是,当然,我的实际DataFrame比['A','B','C']有更多的列。

不需要指定列名,如何找到下一个空白行(或者就像我在上面所做的那样,同时找到所有的空白行)?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-16 00:14:19

IIUC,使用pd.isnull + np.split

代码语言:javascript
复制
df_list = np.split(df, df[df.isnull().all(1)].index) 

for df in df_list:
    print(df, '\n') 

     A    B               C
0  1.0  0.0   International
1  1.0  1.0   International
2  NaN  2.0   International
3  1.0  3.0   International
4  1.0  4.0   International
5  8.0  0.0  North American
6  8.0  1.0  North American
7  8.0  2.0  North American
8  8.0  3.0  North American 

      A    B         C
9   NaN  NaN       NaN
10  1.0  0.0  Internal
11  1.0  1.0  Internal
12  6.0  0.0      East
13  6.0  1.0      East
14  6.0  2.0      East 

首先,获取整个行为null的索引,然后使用该索引将数据分割为块。np.split很好地处理数据。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47319418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档