组合行并填充组内的NaN值

时间:2016-05-16 18:29:26

标签: python pandas dataframe

我有以下DataFrame

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

我正在尝试根据rows Z合并column以获得以下内容:

    X   Y   Z   
0   xxx yyy 333 
1   xxx yyy 444 

2 个答案:

答案 0 :(得分:1)

对于这个特定的例子,你可以这样做:

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

     X    Y    Z
0  xxx  yyy  333
1  xxx  yyy  444

不确定您是否正在寻找更通用的东西?

答案 1 :(得分:1)

你应该

  1. 按标签栏分组,
  2. 在每个组中,回填NaN值,然后返回第一行。
  3. 例如,

    def flatten(g):
        return g.fillna(method='bfill').iloc[0]
    
    df.groupby('Z').apply(flatten).reset_index(drop=True)