根据空列将pandas数据帧拆分为多个数据帧

Yen*_*Yen 12 python dataframe pandas

我有一个pandas数据帧如下:

        a       b       c
    0   1.0     NaN     NaN
    1   NaN     7.0     5.0
    2   3.0     8.0     3.0
    3   4.0     9.0     2.0
    4   5.0     0.0     NaN
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法可以根据非空值将数据帧拆分成多个数据帧?

        a   
    0   1.0     

         b      c
    1    7.0    5.0

        a       b       c
    2   3.0     8.0     3.0
    3   4.0     9.0     2.0

        a       b      
    4   5.0     0.0
Run Code Online (Sandbox Code Playgroud)

WeN*_*Ben 15

使用groupbydropna

for _, x in df.groupby(df.isnull().dot(df.columns)):
      print(x.dropna(1))

     a    b    c
2  3.0  8.0  3.0
3  4.0  9.0  2.0
     b    c
1  7.0  5.0
     a
0  1.0
     a    b
4  5.0  0.0
Run Code Online (Sandbox Code Playgroud)

我们可以将它们保存在dict中

d = {y : x.dropna(1) for y, x in df.groupby(df.isnull().dot(df.columns))}
Run Code Online (Sandbox Code Playgroud)

更多信息使用dot获取空列,如果它们相同,我们应该将它们组合在一起

df.isnull().dot(df.columns)
Out[1250]: 
0    bc
1     a
2      
3      
4     c
dtype: object
Run Code Online (Sandbox Code Playgroud)

  • 对随后的groupby使用点结果非常精彩.我仍然围绕着你的所作所为,以便更恰当地赞美你的赞美( - : (3认同)