2016-09-15 17 views
2

私はCSVから読み込んだデータからpandasデータフレームを持っています。他の列に文字列が含まれていながら、一つの列には、次のように、(それはリストのように見える)、グループの名前です:pandasデータフレームの文字列データの列を取得し、別々の列に分割します

Group  | Followers 
------------------------------------------ 
biebers | u'user1', u'user2', u'user3' 
catladies | u'user4', u'user5' 
bkworms | u'user6', u'user7' 

私は "内の文字列を分割してみたいのですがフォロワー」欄と、各行がユーザー用で別々のデータフレームだけでなく、彼らがしているグループの列上映を行い、私は次のように取得したいのですが、この例のためので:。

User  |  Group 
-------------------------------- 
user1  |  biebers 
user2  |  biebers 
user3  |  biebers 
user4  |  catladies 
user5  |  catladies 
user6  |  bkworms 
user7  |  bkworms 

誰でもこれに最も接近するための提案がありますか?カラムとしてUser保つために

enter image description here

+0

「リストのように見える文字列」とはどういう意味ですか?それは複数のユニコード文字列のリストのように見えますか?それがどうしてそこに入りましたか? –

+0

はいエントリはすべて文字列です(ユニコード文字列のリストのように見えます)。 CSVからデータが読み込まれ、すべてのエントリの文字列が返されました... – Imu

+0

df.head(10)の結果を投稿できます –

答えて

2
df.Followers = df.Followers.str.replace(r"u'([^']*)'", r'\1') 

df.set_index('Group').Followers.str.split(r',\s*', expand=True) \ 
    .stack().rename('User').reset_index('Group').set_index('User') 

enter image description here


:ここでは、それがどのように見えるかのスクリーンショットです。

df.Followers = df.Followers.str.replace(r"u'([^']*)'", r'\1') 

df.set_index('Group').Followers.str.split(r',\s*', expand=True) \ 
    .stack().rename('User').reset_index('Group') \ 
    .reset_index(drop=True)[['User', 'Group']] 
+0

ああ、本当に 'expand = True'については知らなかった。 –

+0

それは素晴らしかった!私はユーザーがインデックスではなく、別の列であるようにdfを作成する方法を考えています...申し訳ありませんが、私が必要としている正確な出力が明確ではありませんでした... – Imu

+0

@Imu easy、that was a choice私の。私は私のポストを更新します。 – piRSquared

関連する問題