2017-02-07 4 views
3

hereという比較的単純なデータフレームを扱う答えはすでにあります。NaN行でのデータフレームの分割

しかし、私が手にしているデータフレームには、複数の列と多数の行があります。 1つのデータフレームには、軸= 0に沿って3つのデータフレームが添付されています。 (一方の下端は次の頂点に接続されています。)それらはNaN値の行で区切られています。

この1つのデータからNaNの行に沿って3つのデータフレームを分割すると、どうすれば作成できますか?リンクされた答えのように

This is the DataFrame. I intend to split it into three along the NaN rows.

答えて

2

、あなたはグループ番号を識別する列を作成します。同じソリューションを適用することができます。

これを行うには、行のすべての値がNaNになるようにテストする必要があります。そのようなテストがpandasに組み込まれているかどうかわかりませんが、pandasは、シリーズがNaNでいっぱいになっているかどうかを確認するテストがあります。あなたが分割するその答えから同じ技術を使用することができますその時点で

df["group_no"] = df.T.isnull().all().cumsum() 

:だから何がやりたいことは、あなたの「Series」は実際にあなたの行になるように、あなたのデータフレームの転置にそれを実行することですデータフレーム。

結果にNaNの行が残っているので、最後に.dropna()を実行するとよいでしょう。

+1

転置する必要はなく、 'df.isnull()。all(axis = 1).cumsum()'を実行するだけです。 – root

+0

ああ、愚かな私! 'isnull'が' axis'パラメータをとり、 'all'をチェックしなかったのを見ていました:-) – Mikk

関連する問題