我有一个数据集,在第一列有一个序列,在第二列有一个数组。数组由","分隔的值组成。如何将值拆分为不同的列?
data sample:
id values
0 390725715 (service-selection-page, 1, 3)
1 682669054 (mobile-apps full-page, 1, 12)
2 770810604 (service-selection-page, 2, 41)
3 1009039867 (list-property full-page, 1, 7)
4 1523526830 (service-selection-page, 2, 1)
5 1495892895 (mobile-apps full-page, 1, 24)
6 975125144 (service-selection-page, 1, 37)
这里,id是一个序列,values是一个数组。
Expected output:
id values 0 1
0 390725715 service-selection-page 1 3
1 682669054 mobile-apps full-page 1 12
2 770810604 service-selection-page 2 41
3 1009039867 list-property full-page 1 7
4 1523526830 service-selection-page 2 1
5 1495892895 mobile-apps full-page 1 24
6 975125144 service-selection-page 1 37
提前感谢!
df['values'].apply(lambda x: pd.Series(x))
是你想要做的。
例如,如果您的df
是
In [38]: df = pd.DataFrame([[390 , pd.np.array(('service-selection-page', 1, 3))],
[110 , pd.np.array(('page', 1, 3))]],
columns=['id', 'values'])
In [39]: df
Out[39]:
id values
0 390 [service-selection-page, 1, 3]
1 110 [page, 1, 3]
其中,values
包含numpy数组,apply
, lambda x: pd.Series(x)
在df['values']
上
In [40]: df['values'].apply(lambda x: pd.Series(x))
Out[40]:
0 1 2
0 service-selection-page 1 3
1 page 1 3
并且,您可以使用join来扩展列。
In [41]: df.join(df['values'].apply(lambda x: pd.Series(x)))
Out[41]:
id values 0 1 2
0 390 [service-selection-page, 1, 3] service-selection-page 1 3
1 110 [page, 1, 3] page 1 3