我想用逗号连接 Pandas 数据框的 2 列,即:第 1 列中的“abc”与第 2 列中的“123”连接成为“abc, 123”。
例如:
>>> import pandas as pd
>>> import numpy as np
>>> df = pd.DataFrame({'IDx': ['a','b',np.nan,'C'], 'IDy':['1','','2','D']})
>>> df
IDx IDy
0 a 1
1 b
2 NaN 2
3 C D
以下不起作用:
>>> ', '.join([df['IDx'],df['IDy']])
>>> df.apply(lambda x: ', '.join([x['IDx'],x['IDy']]))
这是期望的结果:
>>> df = pd.DataFrame({'ID': ['a, 1', 'b', '2', 'C, D']})
>>> df
ID
0 a, 1
1 b
2 2
3 C, D
最佳答案
您可以使用 apply
与 fillna
清空 string
,map
string
和 strip
的列:
df['ID'] = df[['IDx', 'IDy']].apply(lambda x: ','.join(x.fillna('').map(str)), axis=1)
df['ID'] = df['ID'].str.strip(',')
print df
IDx IDy ID
0 a 1 a,1
1 b b
2 NaN 2 2
3 C D C,D
或fillna
为空字符串和 astype
到 string
和 strip
:
df['ID'] = df['IDx'].fillna('').astype(str) + ',' + df['IDy'].fillna('').astype(str)
df['ID'] = df['ID'].str.strip(',')
print df
IDx IDy ID
0 a 1 a,1
1 b b
2 NaN 2 2
3 C D C,D
编辑:如果您的列的 dtype
是 string
,您可以省略 map
或 astype
:
df['ID'] = df[['IDx', 'IDy']].apply(lambda x: ','.join(x.fillna('')), axis=1)
df['ID'] = df['ID'].str.strip(',')
或者:
df['ID'] = df['IDx'].fillna('') + ',' + df['IDy'].fillna('')
df['ID'] = df['ID'].str.strip(',')
print df
关于python - 如何用逗号连接 Pandas 数据框的两列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35125062/