【问题标题】:Pandas extractall() - return list, not a MultiLevel index?Pandas extractall() - 返回列表,而不是多级索引?
【发布时间】:2018-06-24 18:26:31
【问题描述】:

我有一个问题,我感觉之前可能已经有人问过了,但形式不同。如果是这样,请指点我原来的。

无论如何,我正在使用 Pandas extractall() 方法,但我不太喜欢它返回具有多级索引 (original index -> 'match' index) 的 DataFrame,所有找到的元素都列在 match 0, match 1, match 2 ... 下 如果输出是单个索引 DataFrame,我宁愿选择多个正则表达式搜索结果(如果适用)作为单个单元格中的列表返回。目前可以吗?

这是我的想法的可视化:

当前输出:

                   X
index    match
  0        0      thank
  1        0      thank
           1      thanks
           2      thanking
  2        0      thanked

期望的输出

          X
index
  0      thank
  1      [thank, thanks, thanking]
  2      thanked

如有任何建议,我将不胜感激。

【问题讨论】:

  • 样本数据可用吗?
  • 很遗憾,我无法分享(工作相关)。我上面包含的示例反映了我对它的一般期望。
  • 您可以模拟与您的工作数据具有相同结构的新数据
  • 我保证我会在下一个问题中提供一些模拟数据。斯科特在下面的回答已经解决了我的问题,所以这次我不会这样做。感谢您抽出时间来了解 Dark 和 Paul H。

标签: python regex pandas


【解决方案1】:

我们试试吧:

df.groupby(level=0)['X'].apply(list)

输出:

0                      [thank]
1    [thank, thanks, thanking]
2                    [thanked]
Name: X, dtype: object

【讨论】:

  • 我能否将一些像这样的 GroupBy 对象合并到一个 DataFrame 中,并保留原始索引?
  • @Greem666 是的,你可以 pd.concat 并保持索引。
  • 太好了。非常感谢您对我的问题的快速(而且非常容易)修复。下次必须记住 groupby() 方法是一个很好的 MultiIndex buster :)
猜你喜欢
  • 2018-02-23
  • 2020-11-17
  • 1970-01-01
  • 2023-01-25
  • 2021-05-03
  • 2020-08-20
  • 2019-11-09
  • 2018-06-10
  • 1970-01-01
相关资源
最近更新 更多