我正在尝试连接 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/