我的数据框包含一个由数字和字符组成的列。我想从那根弦上雕刻出一部分。例如,字符串是“以83%Columbia PK @ st T-362D计费”。我想从字符串中剔除83%。我该怎么办?
答案 0 :(得分:1)
我不确定你指的是什么意思...
如果carve == remove,则可以使用replace()
s = 'Billable at 83% Columbia PK @ st T-362D'
print(s.replace('83%', ''))
# Billable at Columbia PK @ st T-362D
如果carve == get,则可以使用正则表达式,但在这里我需要其他信息以更好地提供帮助。正则表达式可让您根据周围环境抓取字符串的一部分。您可以签出regex documentation here.,例如,如果您每次尝试从字符串中获取百分比,您都可以执行以下操作。
import re
s = 'Billable at 83% Columbia PK @ st T-362D'
match = re.match(r'(\d+%)',s)
print(match.group(1))
# 83%
这些都回答您的问题吗?如果不是,您指的是什么意思?您的预期输出是多少?
答案 1 :(得分:1)
请考虑以下数据框:
df = pd.DataFrame({'A': ['L', 'M', 'N'],'B': ["Billable at 73% Columbia PK @ st T-362D", "Billable at 83% Columbia PK @ st T-362D",
"Billable at 93% Columbia PK @ st T-362D"]})
如果我们假设“剔除”是要删除,并且基于示例“ 83%”被解释为正则表达式,则可以对要应用更改的列使用pandas.dataframe.replace()。 :
df_r = df['B'].replace(to_replace=r'\d+%', value='',regex=True)
df = pd.concat([df.drop(labels="B",axis=1),df_r], axis =1) # replace "B" in original dataframe