代码之家  ›  专栏  ›  技术社区  ›  alwayscurious

组合数据帧中的列

  •  1
  • alwayscurious  · 技术社区  · 6 年前

    我有以下数据帧:

    df = pd.DataFrame({
             'user_a':['A','B','C',np.nan],
             'user_b':['A','B',np.nan,'D']
    })
    

    current df

    我想创建一个名为 user

    complete df

    对很多人来说,最好的方法是什么 users ?

    2 回复  |  直到 6 年前
        1
  •  3
  •   jezrael    6 年前

    iloc :

    df = pd.DataFrame({
             'user_a':['A','B','C',np.nan,np.nan],
             'user_b':['A','B',np.nan,'D',np.nan]
    })
    
    df['user'] = df.ffill(axis=1).iloc[:, -1]
    print (df)
      user_a user_b user
    0      A      A    A
    1      B      B    B
    2      C    NaN    C
    3    NaN      D    D
    4    NaN    NaN  NaN
    
        2
  •  0
  •   ssuperczynski Pravesh Jain    6 年前

    使用 .apply

    In [24]: df = pd.DataFrame({'user_a':['A','B','C',np.nan],'user_b':['A','B',np.nan,'D']})
    
    In [25]: df
    Out[25]: 
      user_a user_b
    0      A      A
    1      B      B
    2      C    NaN
    3    NaN      D
    
    In [26]: df['user'] = df.apply(lambda x: [i for i in x if not pd.isna(i)][0], axis=1)
    
    In [27]: df
    Out[27]: 
      user_a user_b user
    0      A      A    A
    1      B      B    B
    2      C    NaN    C
    3    NaN      D    D