Python 合并行并填充组内的NaN值

Python 合并行并填充组内的NaN值,python,pandas,dataframe,Python,Pandas,Dataframe,我有以下数据帧: X Y Z 0 xxx NaN 333 1 NaN yyy 444 2 xxx NaN 333 3 NaN yyy 444 我试图根据Z列组合行,以获得以下内容: X Y Z 0 xxx yyy 333 1 xxx yyy 444 对于此特定示例,您可以执行以下操作: df.fillna(method='ffill').fillna(method='bfill').drop_du

我有以下
数据帧

    X   Y   Z   
0   xxx NaN 333 
1   NaN yyy 444     
2   xxx NaN 333     
3   NaN yyy 444 
我试图根据
Z
组合
,以获得以下内容:

    X   Y   Z   
0   xxx yyy 333 
1   xxx yyy 444 

对于此特定示例,您可以执行以下操作:

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

     X    Y    Z
0  xxx  yyy  333
1  xxx  yyy  444
不确定您是否在寻找更通用的产品?

您应该这样做

  • 按标签列分组,然后
  • 在每个组中,回填
    NaN
    值,并返回第一行
  • 比如说,

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

    我认为你的例子是错误的。
    Z=333的两行在
    Y
    列中都有
    NaN
    Z
    列是否应为
    [333333444444444]