首页 > 解决方案 > Pandas 用正则表达式分成列

问题描述

我有这样的东西我在 DataFrame 中有一个这样的列

Column1
message1 message2 notmessage
message1 message2 
message1 message2 message3 notmessage

我想要一个数据框,例如:

Column1                                 |  A        | b        | c
message1 message2 notmessage            |  message1 | message2 | null
message1 message2                       |  message1 | message2 | null
message1 message2 message3 notmessage   |  message1 | message2 | message3 

使用 Column1 从 Column1 获取第一个值没有问题

df['A'] = df['Column1'].str.extract('(my_regex)',expand=True)

但是我怎样才能获得 3 个新列?我正在尝试使用这个:https ://stackoverflow.com/a/39358924当我在其他文件中使用 split 方法时它对我有用,但它不适用于我的正则表达式拆分,如下所示:

df.join(df['Column1'].str.extract('(my_regex)',expand=True).rename(columns={0:'A', 1:'B', 2:'C'}))

请帮忙 :)

标签: pythonregexpandas

解决方案


我相信您需要Series.str.extractall选择第一列0并通过以下方式重塑Series.unstack

d = {0:'A', 1:'B', 2:'C'}
df = df.join(df['Column1'].str.extractall('(my_regex)')[0].unstack().rename(columns=d))

推荐阅读