Pandas extractall() - 返回列表而不是多级索引?

8

我有一个问题,我感觉可能已经有人问过了,但是问法不同。如果是这种情况,请指向原始问题。

无论如何,我正在使用Pandas的extractall()方法,但我不太喜欢它返回带有多级索引(原始索引->'匹配'索引)的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

我会非常感激任何建议。


有可用的样本数据吗? - Bharath M Shetty
很遗憾,我不能分享它(与工作相关)。我上面提供的示例捕捉了我对它的一般期望。 - Greem666
你可以模拟出与你的工作数据结构相同的新数据。 - Paul H
我保证在下一个问题中会提供一些模拟数据。Scott在下面的回答已经解决了我的问题,所以这次我不会这样做了。谢谢你们的时间,Dark和Paul H。 - Greem666
1个回答

15

让我们来试试:

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

输出:

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

我能否将几个GroupBy对象合并成一个DataFrame,并保留原始索引? - Greem666
@Greem666 是的,你可以使用 pd.concat 并保留索引。 - Scott Boston
太好了。非常感谢您快速(而且出乎意料地容易)解决我的问题。下次一定要记住groupby()方法是一个很好的MultiIndex破解器 :) - Greem666

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接