我有一个大的数据文件,我需要在空行上分割。
下面是一个简化的DataFrame示例:
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放到下一个空白中,以便在最后有几个数据文件。注意,在寻找空白行时,我需要整行为空白。
下面是我用来查找空白的代码:
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']有更多的列。
不需要指定列名,如何找到下一个空白行(或者就像我在上面所做的那样,同时找到所有的空白行)?
谢谢
发布于 2017-11-16 00:14:19
IIUC,使用pd.isnull + np.split
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很好地处理数据。
https://stackoverflow.com/questions/47319418
复制相似问题