【问题标题】:Concatenate column values in Pandas DataFrame replacing “NaN” values with comma连接 Pandas DataFrame 中的列值,用逗号替换“NaN”值
【发布时间】:2020-02-13 15:07:23
【问题描述】:

我正在尝试连接 Pandas DataFrame 列,用逗号替换“NaN”值。

df = pd.DataFrame({'col1' : ["1","2","3","4","5",np.nan],
                   'col2'  : ["p1","p2","p1",np.nan,"p2",np.nan], 
                   'col3' : ["A","B","C","D","E","F"]})


df


 col1    col2  col3
0    1    p1    A
1    2    p2    B
2    3    p1    C
3    4    NaN   D
4    5    p2    E
5    NaN  NaN   F

我需要一个输出:-

   col1  col2  col3  col4
0    1    p1    A    1, p1, A
1    2    p2    B    2, p2, B
2    3    p1    C    3, p1, C
3    4    NaN   D    4, , D
4    5    p2    E    5, p2, E
5    NaN  NaN   F     , , F

基本上我需要在col4 中的每一行使用相同数量的逗号。

提前感谢您的帮助

【问题讨论】:

    标签: python python-3.x pandas dataframe


    【解决方案1】:

    DataFrame.fillna 替换缺失值,然后每行使用join

    df['col4'] = df.astype(str).fillna('').apply(', '.join, axis=1)
    

    或添加, 并使用sum 加入,最后删除最后一个, by Series.str.rstrip

    df['col4'] = df.astype(str).fillna('').add(', ').sum(axis=1).str.rstrip(', ')
    

    或者单独处理每一列:

    df['col4'] = (df['col1'].astype(str).fillna('') + ', ' + 
                  df['col2'].astype(str).fillna('') + ', ' + 
                  df['col3'].astype(str))
    

    print (df)
      col1 col2 col3      col4
    0    1   p1    A  1, p1, A
    1    2   p2    B  2, p2, B
    2    3   p1    C  3, p1, C
    3    4  NaN    D    4, , D
    4    5   p2    E  5, p2, E
    5  NaN  NaN    F     , , F
    

    【讨论】:

      猜你喜欢
      • 2013-09-12
      • 1970-01-01
      • 2018-11-14
      • 2017-07-04
      • 2023-01-19
      • 1970-01-01
      • 2016-01-08
      相关资源
      最近更新 更多