我正在使用Pandas的read_csv
清洁餐厅数据集。
我有这样的专栏:
name, online_order, book_table, rate, votes
xxxx, Yes, Yes, 4.5/5, 705
我希望他们像这样:
name, online_order, book_table, rate, votes
xxxx, Yes, Yes, 4.5, 705
答案 0 :(得分:0)
您可以使用python .split()
函数删除特定的文本,因为文本将始终为“ / 5”,并且您不希望保留“ / 5”的情况串。您可以像这样使用它:
num = "4.5/5"
num.split("/5")[0]
output: '4.5'
如果这不是您真正需要的,还有更多的regex python函数here
答案 1 :(得分:0)
您可以使用DataFrame.apply()
在rate
列上进行替换操作:
def clean(x):
if "/" not in x :
return x
else:
return x[0:x.index('/')]
df.rate = df.rate.apply(lambda x : clean(x))
print(df)
输出
+----+-------+---------------+-------------+-------+-------+
| | name | online_order | book_table | rate | votes |
+----+-------+---------------+-------------+-------+-------+
| 0 | xxxx | Yes | Yes | 4.5 | 705 |
+----+-------+---------------+-------------+-------+-------+
编辑
经过编辑以处理可能存在多个/
或它可能是除/5
之外的另一个数字(即:/4
或/1/3
...)的情况< / p>
答案 2 :(得分:0)
基本上,您需要基于dataframe["rate"]
拆分项目(/
)并取出所需的内容。使用.apply
在您的数据框中lambda x: getRate(x)
def getRate(x):
return str(x).split("/")[0]
要将其与列名rate
一起使用,我们可以使用:
dataframe["rate"] = dataframe["rate"].apply(lambda x: getRate(x))