2 回答

TA貢獻1852條經(jīng)驗 獲得超7個贊
用于pandas.Series.str.split
將字符串拆分為list
.
# use str split on the column
df.mgrs_grids = df.mgrs_grids.str.split(',')
# display(df)
? ?driver_code journey_code? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?mgrs_grids
0? ? ? 7211863? 7211863-140? ? ? ? ? ? ? ? ? ? ? ? ? ? [18TWL927129, 18TWL888113, 18TWL888113, 18TWL887113, 18TWL888113, 18TWL887113, 18TWL887113, 18TWL887113, 18TWL903128]
1? ? ? 7211863? 7211863-105? [18TWL927129, 18TWL939112, 18TWL939112, 18TWL939113, 18TWL939113, 18TWL939113, 18TWL939113, 18TWL939113, 18TWL939113, 18TWL960111, 18TWL960112]
2? ? ? 7211863? ?7211863-50? ? ? ? ? ? ? ? ? ? ? ? ? ? [18TWL927129, 18TWL889085, 18TWL889085, 18TWL888085, 18TWL888085, 18TWL888085, 18TWL888085, 18TWL888085, 18TWL890085]
3? ? ? 7211863? 7211863-109? ? ? ? ? ? ? ?[18TWL927129, 18TWL952106, 18TWL952106, 18TWL952106, 18TWL952106, 18TWL952106, 18TWL952106, 18TWL952106, 18TWL952105, 18TWL951103]
print(type(df.loc[0, 'mgrs_grids']))
[out]:
list
每個值單獨一行
創(chuàng)建一列列表后。
用于
pandas.DataFrame.explode
為列表中的每個值創(chuàng)建單獨的行。
# get a separate row for each value
df = df.explode('mgrs_grids').reset_index(drop=True)
# display(df.hea())
? ?driver_code journey_code? ?mgrs_grids
0? ? ? 7211863? 7211863-140? 18TWL927129
1? ? ? 7211863? 7211863-140? 18TWL888113
2? ? ? 7211863? 7211863-140? 18TWL888113
3? ? ? 7211863? 7211863-140? 18TWL887113
4? ? ? 7211863? 7211863-140? 18TWL888113
更新
這是另一個選項,它將 組合
'journey_code'
到 的前面'mgrs_grids'
,然后將字符串拆分為列表。該列表被分配回
'mgrs_grids'
,但也可以分配給新列。
# add the journey code to mgrs_grids and then split
df.mgrs_grids = (df.journey_code + ',' + df.mgrs_grids).str.split(',')
# display(df.head())
? ?driver_code journey_code? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? mgrs_grids
0? ? ? 7211863? 7211863-140? ? ? ? ? ? ? ? ? ? ? ? ? ? [7211863-140, 18TWL927129, 18TWL888113, 18TWL888113, 18TWL887113, 18TWL888113, 18TWL887113, 18TWL887113, 18TWL887113, 18TWL903128]
1? ? ? 7211863? 7211863-105? [7211863-105, 18TWL927129, 18TWL939112, 18TWL939112, 18TWL939113, 18TWL939113, 18TWL939113, 18TWL939113, 18TWL939113, 18TWL939113, 18TWL960111, 18TWL960112]
2? ? ? 7211863? ?7211863-50? ? ? ? ? ? ? ? ? ? ? ? ? ? ?[7211863-50, 18TWL927129, 18TWL889085, 18TWL889085, 18TWL888085, 18TWL888085, 18TWL888085, 18TWL888085, 18TWL888085, 18TWL890085]
3? ? ? 7211863? 7211863-109? ? ? ? ? ? ? ?[7211863-109, 18TWL927129, 18TWL952106, 18TWL952106, 18TWL952106, 18TWL952106, 18TWL952106, 18TWL952106, 18TWL952106, 18TWL952105, 18TWL951103]
# output to nested list
df.mgrs_grids.tolist()
[out]:
[['7211863-140', '18TWL927129', '18TWL888113', '18TWL888113', '18TWL887113', '18TWL888113', '18TWL887113', '18TWL887113', '18TWL887113', '18TWL903128'],
?['7211863-105', '18TWL927129', '18TWL939112', '18TWL939112', '18TWL939113', '18TWL939113', '18TWL939113', '18TWL939113', '18TWL939113', '18TWL939113', '18TWL960111', '18TWL960112'],
?['7211863-50', '18TWL927129', '18TWL889085', '18TWL889085', '18TWL888085', '18TWL888085', '18TWL888085', '18TWL888085', '18TWL888085', '18TWL890085'],
?['7211863-109', '18TWL927129', '18TWL952106', '18TWL952106', '18TWL952106', '18TWL952106', '18TWL952106', '18TWL952106', '18TWL952106', '18TWL952105', '18TWL951103']]

TA貢獻1856條經(jīng)驗 獲得超5個贊
您還可以將數(shù)據(jù)框拆分并分解為表格格式。
df1 = df.join(df['mgrs_grids'].str.split(',',expand=True).stack().reset_index(1),how='outer')\
.drop(['level_1','mgrs_grids'],1).rename(columns={0 : 'mgrs_grids'})
print(df1)
driver_code journey_code mgrs_grids
0 7211863 7211863-140 18TWL927129
0 7211863 7211863-140 18TWL888113
0 7211863 7211863-140 18TWL888113
0 7211863 7211863-140 18TWL887113
0 7211863 7211863-140 18TWL888113
0 7211863 7211863-140 18TWL887113
0 7211863 7211863-140 18TWL887113
0 7211863 7211863-140 18TWL887113
0 7211863 7211863-140 18TWL903128
1 7211863 7211863-105 18TWL927129
1 7211863 7211863-105 18TWL939112
1 7211863 7211863-105 18TWL939112
1 7211863 7211863-105 18TWL939113
1 7211863 7211863-105 18TWL939113
1 7211863 7211863-105 18TWL939113
1 7211863 7211863-105 18TWL939113
1 7211863 7211863-105 18TWL939113
1 7211863 7211863-105 18TWL939113
1 7211863 7211863-105 18TWL960111
1 7211863 7211863-105 18TWL960112
2 7211863 7211863-50 18TWL927129
2 7211863 7211863-50 18TWL889085
2 7211863 7211863-50 18TWL889085
2 7211863 7211863-50 18TWL888085
2 7211863 7211863-50 18TWL888085
2 7211863 7211863-50 18TWL888085
2 7211863 7211863-50 18TWL888085
2 7211863 7211863-50 18TWL888085
2 7211863 7211863-50 18TWL890085
3 7211863 7211863-109 18TWL927129
3 7211863 7211863-109 18TWL952106
3 7211863 7211863-109 18TWL952106
3 7211863 7211863-109 18TWL952106
3 7211863 7211863-109 18TWL952106
3 7211863 7211863-109 18TWL952106
3 7211863 7211863-109 18TWL952106
3 7211863 7211863-109 18TWL952106
3 7211863 7211863-109 18TWL952105
3 7211863 7211863-109 18TWL951103
添加回答
舉報