Leg*_*ack 2 python isnull dataframe pandas
我有一个大数据框,需要在空行上拆分。
这是 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
...
Run Code Online (Sandbox Code Playgroud)
如您所见,第 9 行是空白的。我需要做的是将第 0 行到第 8 行并将它们放入不同的数据帧中,并将第 10 行放入下一个空白处,以便我最终有几个数据帧。请注意,在查找空白行时,我需要整行都为空白。
这是我用来查找空白的代码:
def find_breaks(df):
df_breaks = df[(df.loc[:,['A','B','C']].isnull()).any(axis=1)]
print(df_breaks.index)
Run Code Online (Sandbox Code Playgroud)
当我在简化的 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
Run Code Online (Sandbox Code Playgroud)
首先,获取整行为空的索引,然后使用它来将数据帧拆分为多个块。np.split很好地处理数据帧。