Python Pandas dataframe:如何按多值列将一行拆分为多行?
我有一个数据框,如下所示:Python Pandas dataframe:如何按多值列将一行拆分为多行?,python,pandas,Python,Pandas,我有一个数据框,如下所示: issue_key date pkey component case_count 0 1060 2018-03-08 PROJ console,configuration,management 8 1 1464 2018-04-24 PROJ2 protocol 1 2 611 2017-03-31 PROJ Non
issue_key date pkey component case_count
0 1060 2018-03-08 PROJ console,configuration,management 8
1 1464 2018-04-24 PROJ2 protocol 1
2 611 2017-03-31 PROJ None 2
3 2057 2018-10-30 PROJ ha, console 0
issue_key date pkey component case_count
0 1060 2018-03-08 PROJ console 8
1 1060 2018-03-08 PROJ configuration 8
2 1060 2018-03-08 PROJ management 8
3 1464 2018-04-24 PROJ2 protocol 1
4 611 2017-03-31 PROJ None 2
5 2057 2018-10-30 PROJ ha 0
6 2057 2018-10-30 PROJ console 0
我需要将component列中具有多个值的行拆分为每个组件一行
完成后,数据框应显示如下:
issue_key date pkey component case_count
0 1060 2018-03-08 PROJ console,configuration,management 8
1 1464 2018-04-24 PROJ2 protocol 1
2 611 2017-03-31 PROJ None 2
3 2057 2018-10-30 PROJ ha, console 0
issue_key date pkey component case_count
0 1060 2018-03-08 PROJ console 8
1 1060 2018-03-08 PROJ configuration 8
2 1060 2018-03-08 PROJ management 8
3 1464 2018-04-24 PROJ2 protocol 1
4 611 2017-03-31 PROJ None 2
5 2057 2018-10-30 PROJ ha 0
6 2057 2018-10-30 PROJ console 0
关于如何最好地做到这一点,有什么建议吗?假设
dd
是您的数据帧。你可以做:
# convert to list
dd['component'] = dd['component'].str.split(',')
# convert list of pd.Series then stack it
dd = (dd
.set_index(['issue_key','date','pkey','case_count'])['component']
.apply(pd.Series)
.stack()
.reset_index()
.drop('level_4', axis=1)
.rename(columns={0:'component'}))
issue_key date pkey case_count component
0 1060 2018-03-08 PROJ 8 console
1 1060 2018-03-08 PROJ 8 configuration
2 1060 2018-03-08 PROJ 8 management
3 1464 2018-04-24 PROJ2 1 protocol
4 611 2017-03-31 PROJ 2 None
5 2057 2018-10-30 PROJ 0 ha
6 2057 2018-10-30 PROJ 0 console
请编辑表格格式。现在很难理解。看到相同的,刚刚完成编辑。如果有另一列是组件的变量,比如组件的颜色,我们如何实现这一点。例如:控制台,配置有蓝色,白色的另一栏颜色。