2017-11-30 5 views
1

リストを含む複数の列の内容を、1つのリストだけを含む新しい列に結合したいとします。パンダ:他の列の複数のリストを結合して新しい列を追加するにはどうすればよいですか?

Name   list0   list1      list2 
0 a [Now, Now, Now]   None [works!, works!, works!] 
1 b [Now, Now, Now] [it, it, it]      None 
2 c [Now, Now, Now] [it, it, it] [works!, works!, works!] 

新しい列は次のようになります。

0    [Now, Now, Now, works!, works!, works!] 
1       [Now, Now, Now, it, it, it] 
2 [Now, Now, Now, it, it, it, works!, works!, wo... 

私のソリューション:

#Column of empty lists 
new['helper']=np.empty((len(new), 0)).tolist() 

#Missing values to empty lists 
new['list0']=new['list0'].fillna(new['helper']) 
new['list1']=new['list1'].fillna(new['helper']) 
new['list2']=new['list2'].fillna(new['helper']) 

#Add Lists 
new['together']=new['list0']+new['list1']+new['list2'] 

しかし速いか、少なくともよりよい解決策がなければなりません! ヒント?

答えて

2

私はあなたが必要と考えている:

cols = ['list0','list1','list2'] 
df[cols] = df[cols].applymap(lambda x: [] if x == None else x) 
0
new['together']=new[['list0', 'list1', 'list2']].apply(lambda x: ''.join(x), axis=1) 

は速く

それらを一緒に参加する必要があります
関連する問題