Python 连接数据帧中的列值,用逗号替换“NaN”值
我正在尝试连接Pandas DataFrame列,用逗号替换“NaN”值Python 连接数据帧中的列值,用逗号替换“NaN”值,python,python-3.x,pandas,dataframe,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
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中的每一行使用相同数量的逗号
提前感谢您的帮助将缺少的值替换为,然后使用“按行联接”:
df['col4'] = df.astype(str).fillna('').apply(', '.join, axis=1)
或通过以下方式添加,并将总和用于联接、最后移除和最后移除:
或分别处理每一列:
df['col4'] = (df['col1'].astype(str).fillna('') + ', ' +
df['col2'].astype(str).fillna('') + ', ' +
df['col3'].astype(str))
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