2017-08-01 20 views
1

セミコロンを含むpandas系列を分割できません。それは、列名( 'Social_Media')をインデックスとして使用しているか、それとも、Pythonがセミコロンを分割文字として認識しないためですか?または、私のスクリプトに何か問題がありますか?複数の列にセミコロンで文字列を含むPandas Separate列

#Filters the NaN columns 
df2 = df[df['Social_Media'].notnull()] 
# Splitter for semicolon 
df2['Social_Media'].apply(lambda x: x.split(';')[0]) 

#This is my output after the split 
Timestamp        
2017-06-01 18:10:46   Twitter;Facebook;Instagram;WhatsApp;Google+ 
2017-06-01 19:24:04   Twitter;Facebook;Instagram;WhatsApp;Google+ 
2017-06-01 19:25:21   Twitter;Facebook;Instagram;WhatsApp;Google+ 

出力として確認する必要があるもの。

Timestamp     name_a name_b name_c name_d name_e 
2017-06-01 18:10:46   Twitter Facebook Instagram WhatsApp Google+ 
2017-06-01 19:24:04   Twitter Facebook Instagram WhatsApp Google+ 
2017-06-01 19:25:21   Twitter Facebook Instagram WhatsApp Google+ 
+1

おかげでたくさん、それはとてもうまくいきました。文字列を扱う方法についての追加のお勧めもありがとう – Gwiji

答えて

0

あなたはアルファベットでstr.split

df = df['Social_Media'].str.split(';', expand=True).add_prefix('name_') 
print (df) 
         name_0 name_1  name_2 name_3 name_4 
Timestamp               
2017-06-01 18:10:46 Twitter Facebook Instagram WhatsApp Google+ 
2017-06-01 19:24:04 Twitter Facebook Instagram WhatsApp Google+ 
2017-06-01 19:25:21 Twitter Facebook Instagram WhatsApp Google+ 

と列の名前を使用することができます。

import string 
L = list(string.ascii_lowercase) 
names = dict(zip(range(len(L)), ['name_' + x for x in L])) 

df = df['Social_Media'].str.split(';', expand=True).rename(columns=names) 
print (df) 
         name_a name_b  name_c name_d name_e 
Timestamp               
2017-06-01 18:10:46 Twitter Facebook Instagram WhatsApp Google+ 
2017-06-01 19:24:04 Twitter Facebook Instagram WhatsApp Google+ 
2017-06-01 19:25:21 Twitter Facebook Instagram WhatsApp Google+ 
関連する問題