Python如何在字符串中每次有一大块数字时分割列

标签 python regex dataframe split

我有一个表(数据框)需要清理,每一行看起来像这样:

<表类=“s-表”> <标题> A 列 B 列 <正文> 单元格 1 1234 abcd 667 随机数 单元 3 4455 abcd abc 847 其他 randomthings 1 结局

我想将其分成如下表。

<表类=“s-表”> <标题> A 列 B 列 <正文> 单元格 1 1234 abcd 单元格 1 667 个随机事物 单元 3 4455 abcd abc 单元 3 847 个其他随机事物 单元 3 1 个结局

所以想法是B列中的内容应该被分割并转换为多行,分隔符是一大块随机数(代码)。

我对 Python 很陌生,但自己也不太了解。我怎样才能做到这一点?谢谢!

最佳答案

使用 Series.str.findall + df.explode 组合:

df['Column B'] = df['Column B'].str.findall(r'(\d+[\s\D]+)')
df = df.explode('Column B')

  Column A                 Column B
0  Cell 1                1234 abcd 
0  Cell 1          667 randomthings
1  Cell 3            4455 abcd abc 
1  Cell 3   847 other randomthings 
1  Cell 3                 1 endings

如果删除尾随空格很重要,请将正则表达式模式更改为 r'(\d+[\s\D]+[^\d\s])'findall匹配。或申请df['Column B'] = df['Column B'].str.strip()在第一次初始接近结束时。

关于Python如何在字符串中每次有一大块数字时分割列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75699249/

相关文章:

python - 如何通过聚合摆脱 Pandas 中的嵌套列名?

python - Django Rest Framework 月份和年份作为 NumberFilter

java - 混淆日期模式字符串

python - Pandas 将一个数据框叠加在另一个数据框上

python - 根据 DataFrame 中的条件检索列

r - 连接两列的因子水平

python - 密码解密失败

python - 为什么通过 Web 服务 API 调用 Azure ML 分类模型不返回概率分数?

java 正则表达式捕获组

python - 正则表达式匹配以分号分隔的标记序列的字符串