python - 连接 Pandas DataFrame 中的列值,用逗号替换 “NaN” 值

标签 python python-3.x pandas dataframe

我正在尝试连接 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 中的每一行使用相同数量的逗号。

感谢您提前提供帮助

最佳答案

将缺失值替换为 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

关于python - 连接 Pandas DataFrame 中的列值,用逗号替换 “NaN” 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60201936/

相关文章:

python - 更改 SparseDataFrame 中的 fill_values - 替换抛出 TypeError

python - 在特定级别重新索引 pandas MultiIndex

python - 将两个 csv 文件与自定义列合并

python - Pandas groupby 每列并为每组添加新列

python - 更改 get_context_data 中的查询集后分页不起作用

python - 如何删除列表中的最后一项?

python - 脚本无法导入已安装的包,但解释器可以

python - 如何评估 DataFrame 中包含的按行表达式(如 df.eval() 但动态)?

python - 为什么我的程序返回 "No review v1"而不是返回有评论的产品的平均评论?(网络抓取,python)

python - 我的 Python 进程在哪些 CPU 内核上运行?