将文本拆分为多个列

时间:2017-12-15 18:11:40

标签: python string pandas split

我有以下数据框,我想将列activities拆分为其他列,将文本“,”拆分为我的数据框

id  activities
 1  541,589,235,45
 2  213,213
 3  458,88,999,150,360

我正在使用df= df['activities'].str.split(',',5,expand=True)

显示的数据框是我真实数据帧的一个子集,在我的数据框中我不知道它们可以有多少活动(在这种情况下是5但在我的数据集中我不知道,所以我需要将5更改为“n” “活动”。而且,如果我执行该代码,我会松开id列。

2 个答案:

答案 0 :(得分:4)

你走在正确的轨道上。拆分后,您可以

  • 分配id
  • concat这两件
i = df.activities.str.split(',', expand=True).add_prefix('activity_')
i

  activity_0 activity_1 activity_2 activity_3 activity_4
0        541        589        235         45       None
1        213        213       None       None       None
2        458         88        999        150        360


j = i.assign(id=df['id'])   # assign id back
j = pd.concat([df[['id']], i], 1)   # concat the two pieces
j

   id activity_0 activity_1 activity_2 activity_3 activity_4
0   1        541        589        235         45       None
1   2        213        213       None       None       None
2   3        458         88        999        150        360

答案 1 :(得分:3)

我们可以在这里使用apply(pd.Series)

df.set_index('id').activities.str.split(',').apply(pd.Series).add_prefix('activities_').reset_index()
Out[479]: 
   id activities_0 activities_1 activities_2 activities_3 activities_4
0   1          541          589          235           45          NaN
1   2          213          213          NaN          NaN          NaN
2   3          458           88          999          150          360