2016-02-01 66 views
3

我想用逗號連接熊貓數據框的2列,即:第1列中的「abc」與第2列中的「123」連接成爲「abc,123」。如何用逗號加入熊貓數據框的2列?

例如:

>>> 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 

回答

1

您可以使用applyfillnastringmap列到stringstrip

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空字符串,astypestringstrip

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 

編輯:如果你的列dtypestring,你可以省略mapastype

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