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

tp5buhyn  于 2023-03-11  发布在  Python
关注(0)|答案(1)|浏览(87)

我有一个表(dataframe)要清理,每行看起来像这样:
| 色谱柱A|B栏|
| - ------|- ------|
| 细胞1|1234 abcd 667随机事件|
| 单元格3|4455 abcd abc 847其他随机事件1结尾|
我想把它分成一个如下的表格。
| 色谱柱A|B栏|
| - ------|- ------|
| 细胞1|小行星1234|
| 细胞1|667件随机事件|
| 单元格3|小行星4455|
| 单元格3|847其他随机事件|
| 单元格3|1个结局|
因此,我们的想法是将B列中的内容拆分并转换为多行,分隔符是一组随机数(代码)。
我对Python还很陌生,自己也不知道,我该怎么做呢?谢谢!

fhity93d

fhity93d1#

使用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

如果去除尾随空格很重要,则在findall匹配中将regex模式更改为r'(\d+[\s\D]+[^\d\s])'。或者在第一个初始方法结束时应用df['Column B'] = df['Column B'].str.strip()

相关问题