python - Pandas 数据框 : how do I split one row into multiple rows by multi-value column?

标签 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  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

关于python - Pandas 数据框 : how do I split one row into multiple rows by multi-value column?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53860398/

相关文章:

python - 使用 PySpark 对数字列进行分箱

python - 为什么 df.isnull().sum() 会这样工作?

python - PyWinAuto 问题 : can't access header's columns

Python将C头文件转换为dict

python - 使用 Pandas 的指数加权移动平均线

python - 向pandas的pivot_table方法提供lambda函数列表时出现"Reindexing only valid with uniquely valued Index objects"错误?

python - 循环发送多个 Pandas DataFrames .to_csv()

python - Seaborn clustermap 不显示所有行注释

python - 运行时错误 : working outside of request context

python - 如何去掉字符串中的某些字符? .replace() 不起作用