在空白行上拆分 Pandas DataFrame
Split Pandas DataFrame on Blank rows
我有一个大型数据框,需要在空行上拆分。
这是 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 行放入不同的数据帧,以及第 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']
多得多
如何在不指定列名的情况下找到下一个空白行(或者像我上面所做的那样,同时找到所有空白行)?
谢谢
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
首先,获取整行为空的索引,然后使用它来将数据帧拆分为块。 np.split
可以很好地处理数据帧。
我有一个大型数据框,需要在空行上拆分。
这是 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 行放入不同的数据帧,以及第 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']
如何在不指定列名的情况下找到下一个空白行(或者像我上面所做的那样,同时找到所有空白行)?
谢谢
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
首先,获取整行为空的索引,然后使用它来将数据帧拆分为块。 np.split
可以很好地处理数据帧。