删除熊猫数据框中“标签”列中出现数字后的空格

Posted

技术标签:

【中文标题】删除熊猫数据框中“标签”列中出现数字后的空格【英文标题】:Remove space after number occurrence in 'label' column in pandas dataframe 【发布时间】:2021-01-31 01:23:53 【问题描述】:

我有一个带有“标签”列的数据框,它的标点符号和间距值很差。使用字符串替换清除标点符号后,现在需要删除数字出现后的空格。

下面是带有样本值的df:

label = 'label':['L1 RE','L1 REL3 RE', 'Quality','L1 RE L3 Algo', 'PM, L4 HW,L1 SW'],
        'name':['mon','tue','wed','thur','fri']
df = pd.DataFrame(label)

我尝试了正则表达式:number = re.search(r'\d+', df['label']).group()

但得到错误:TypeError: expected string or bytes-like object

【问题讨论】:

那么,您要删除Label 中的所有空格吗? df['label'].str.replace(' ','')? df['label'].str.replace(r'(\d)\s+',r'\1')? 我想在数字出现后删除空格并从上面替换帮助。谢谢 【参考方案1】:

你可以使用

df['label'] = df['label'].str.replace(r'(\d)\s+',r'\1')

请参阅regex demo

在这种情况下,一个数字与(\d) 匹配并捕获,并且一个或多个空格字符仅匹配,并且由于替换是对第 1 组值的反向引用,因此空格是由于Series.str.replace 而被删除。

完整的 Pandas 测试:

import pandas as pd
label = 'label':['L1 RE','L1 REL3 RE', 'Quality','L1 RE L3 Algo', 'PM, L4 HW,L1 SW'], 'name':['mon','tue','wed','thur','fri']
df = pd.DataFrame(label)
df['label'] = df['label'].str.replace(r'(\d)\s+',r'\1')
>>> df
           label  name
0           L1RE   mon
1       L1REL3RE   tue
2        Quality   wed
3    L1RE L3Algo  thur
4  PM, L4HW,L1SW   fri

【讨论】:

以上是关于删除熊猫数据框中“标签”列中出现数字后的空格的主要内容,如果未能解决你的问题,请参考以下文章

做某事。如果在熊猫数据框中列中的值等于 1

如何从包含特定列中特定字符串的熊猫数据框中删除行? [复制]

如何从熊猫数据框中的列中删除字符串值

如果特定列中的值不是熊猫数据框中的整数,则删除行

我正在尝试使用熊猫删除重复的连续元素并保留数据框中的最后一个值

在熊猫数据框列中查找非数字值