【问题标题】:Row wise concatenation and replacing nan with common column values按行串联并用公共列值替换 nan
【发布时间】:2023-01-25 15:40:39
【问题描述】:

下面是输入数据 df1

A        B        C          D  E   F   G
Messi   Forward   Argentina  1  Nan 5   6
Ronaldo Defender  Portugal  Nan 4   Nan 3
Messi   Midfield  Argentina Nan 5   Nan 6
Ronaldo Forward   Portugal   3  Nan 2   3
Mbappe  Forward   France    1   3   2   5

以下是预期的输出

去向

A         B                   C         D   E   F   G
Messi   Forward,Midfield    Argentina   1   5   5   6
Ronaldo Forward,Defender    Portugal    3   4   2   3
Mbappe  Forward               France    1   3   2   5

我的尝试:

df.groupby(['A','C'])['B'].agg(','.join).reset_index()
df.fillna(method='ffill')

我们有更好的方法来做到这一点吗?

【问题讨论】:

    标签: python pandas dataframe string-concatenation method-missing


    【解决方案1】:

    您可以在没有 A,C 的情况下获得所有列的第一个非缺失值,对于 B 聚合,可以通过 join 获得:

    d = dict.fromkeys(df.columns.difference(['A','C']), 'first')
    d['B'] = ','.join
    
    df = df.groupby(['A','C'], sort=False, as_index=False).agg(d)
    print (df)
             A          C                 B    D    E    F  G
    0    Messi  Argentina  Forward,Midfield  1.0  5.0  5.0  6
    1  Ronaldo   Portugal  Defender,Forward  3.0  4.0  2.0  3
    2   Mbappe     France           Forward  1.0  3.0  2.0  5
    

    【讨论】:

      猜你喜欢
      • 2021-12-09
      • 2023-01-23
      • 2018-12-25
      • 2019-09-29
      • 2019-09-27
      • 2021-03-08
      • 1970-01-01
      • 2021-10-28
      • 1970-01-01
      相关资源
      最近更新 更多