我有以下数据框,我想将列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
列。
答案 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