熊猫雕刻琴弦的某个部分

时间:2020-10-01 17:31:32

标签: python pandas string dataframe

我的数据框包含一个由数字和字符组成的列。我想从那根弦上雕刻出一部分。例如,字符串是“以83%Columbia PK @ st T-362D计费”。我想从字符串中剔除83%。我该怎么办?

2 个答案:

答案 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