python - 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'}))
请帮忙 :)
解决方案
我相信您需要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))
推荐阅读
- c++ - 一些 std::ranges::XXX_n 的动机是什么?
- reactjs - Django authorizing request even if permissions.AllowAny is set
- three.js - 来自三个.js RenderTarget 的 alpha 地图的意外透明度
- javascript - 它显然无法找到模块
- scrapy - 如何将scrapy合约与CloseSpider异常结合起来
- ios - 当用户更改 Picker 值时执行操作
- azure-functions - Azure 功能消耗计划中使用 Azure 应用配置的指南
- java - 获取 Spring WebClient 请求的状态码
- css - 悬停在TextField上时Material-ui显示指针光标
- report - 无法生成黄瓜 pdf 报告