2017-11-16 8 views
0

空の行に分割する必要がある大きなデータフレームがあります。ここ空白行に分割されたパンダ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を次の空白に入れて、最後にいくつかのデータフレームを入れることです。ブランク行を探すときは、行全体を空白にする必要があることに注意してください。

ここ

私は空白を見つけるために使用しているコードです:私は単純化されたDFにそれをテストする場合、このコードが動作する

def find_breaks(df): 
    df_breaks = df[(df.loc[:,['A','B','C']].isnull()).any(axis=1)] 
    print(df_breaks.index) 

をしかし、当然のことながら、私の本当のデータフレームが['A','B','C']

よりも多くの列があります。

カラム名を指定しなくても、次のブランク行(または上記のようにすべてのブランク行を一度に見つけることができます)を見つけるにはどうすればよいですか?

おかげ

答えて

1

IIUCは、+ np.splitpd.isnullを使用:

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はデータフレームを非常によく扱います。

+0

私のコードよりもはるかに複雑ではありませんが、ありがとうございます。 –

+1

@LegitStackプラス、あなたのコードは_any _...を必要としていましたが、_all_(これは1つまたは2つだけでなくすべてTrueであることが保証されています)。 –

関連する問題