【问题标题】:Explode rows pandas dataframe [duplicate]爆炸行熊猫数据框[重复]
【发布时间】:2022-01-27 04:30:24
【问题描述】:

我有一个如下所示的 pandas 数据框:

Letters Date
'Letters : a' 2021
'Letters : a,b,c' 2019
'Letters : a,b' 2017

我想变成下面这个样子,用pandas/python。

Letters Date
a 2021
a 2019
b 2019
c 2019
a 2017
b 2017

提前谢谢你

【问题讨论】:

  • 你的行真的是这样格式化的'Letters : a,b,c'? (带引号)
  • 不用担心我输入的引号只是为了表明它是一个字符串。
  • 好的,所以值是a,b,c 没有字母?

标签: python pandas list dataframe pandas-explode


【解决方案1】:

split 你的值之后使用explode

>>> df.assign(Letters=df['Letters'].str.split(',')).explode('Letters')

  Letters  Date
0       a  2021
1       a  2019
1       b  2019
1       c  2019
2       a  2017
2       b  2017

【讨论】:

  • 为什么又要上当了?
  • 回答了很多次,为什么不关闭呢?
  • 抱歉,只是想通过@gold_cy 提供的 split(" : ", expand=True)[1] 步骤加倍努力。
【解决方案2】:

在使用explode之前,我们可以使用Series.str.split解析出相关信息到list

df.assign(
    Letters=df.Letters \
              .str \
              .split(" : ", expand=True)[1] \
              .str.split(",") \
         ) \
  .explode("Letters")

  Letters  Date
0       a  2021
1       a  2019
1       b  2019
1       c  2019
2       a  2017
2       b  2017

请注意,此答案中未重置索引,如果需要,您可以致电reset_index

【讨论】:

    猜你喜欢
    • 2019-01-15
    • 2021-05-27
    • 1970-01-01
    • 1970-01-01
    • 2023-01-19
    • 2018-08-03
    • 2012-12-21
    • 2021-08-20
    • 2021-04-06
    相关资源
    最近更新 更多