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

请编辑表格格式。现在很难理解。看到相同的,刚刚完成编辑。如果有另一列是组件的变量,比如组件的颜色,我们如何实现这一点。例如:控制台,配置有蓝色,白色的另一栏颜色。