2016-05-16 32 views
1

我有以下DataFrame合併行,並填寫組內NaN值

X Y Z 
0 xxx NaN 333 
1 NaN yyy 444  
2 xxx NaN 333  
3 NaN yyy 444 

我想基礎上,Zcolumn結合rows得到如下:

X Y Z 
0 xxx yyy 333 
1 xxx yyy 444 
+0

我覺得你的例子是關閉的。 'Z = 333'的兩行都在'Y'列中有'NaN'。 「Z」欄應該是「[333,333,444,444]」嗎? –

回答

1

你應該

  1. 組由標籤列,每個組內
  2. ,回填NaN值,並返回第一行。

例如,

def flatten(g): 
    return g.fillna(method='bfill').iloc[0] 

df.groupby('Z').apply(flatten).reset_index(drop=True) 
1

對於這個特定的例如,你可以這樣做:

df.fillna(method='ffill').fillna(method='bfill').drop_duplicates() 

    X Y Z 
0 xxx yyy 333 
1 xxx yyy 444 

不確定你是否在尋找更一般的東西?