如何从CSV文件中删除“ / 5”

时间:2019-06-21 14:18:38

标签: python-3.x pandas

我正在使用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

3 个答案:

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