首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在熊猫数据帧中的列中应用.replace()来清理数据

如何在熊猫数据帧中的列中应用.replace()来清理数据
EN

Data Science用户
提问于 2020-04-14 17:14:29
回答 1查看 250关注 0票数 3

我有一个熊猫数据框架,在该框架中,我希望替换"“一列中所有非数值的值。

我在代码中遇到的错误如下:

代码语言:javascript
复制
ValueError: could not convert string to float: '690,276.00'

因为我试图将所有的值转换成浮点数,所以我可以对它们进行内部操作。

我清理数据帧代码的一部分如下所示:

代码语言:javascript
复制
    # Cleaning:              
df_clean = df_read[~(df_read['Ratio of Similarity (Gray)'] <= .2)]
print(df_clean, 'clean 1: Eliminate Ratio of similarity less than 0.2')
df_clean_2 = df_clean.dropna(subset=['buybox_price'])  
print(df_clean_2, 'clean 2: Eliminate Nan Buybox Prices')
df_clean_2 = df_clean_2.replace(",", "").replace('', '').astype({'product_ranking':'float64'})
df_clean_3 = df_clean_2[~(df_clean_2['product_ranking'] >= 5000000)]
print(df_clean_3, 'clean 3: Eliminate Product Ranking + than 5.000.000')
df_clean_4 = df_clean_3[~(df_clean_3['buybox_price'] <= 6)]
print(df_clean_4, 'clean 4: Eliminate Buybox Price less than 6该错误可以在行中找到:df_clean_3 = df_clean_2[~(df_clean_2['product_ranking'] >= 5000000)]
    print(df_clean_3, 'clean 3: Eliminate Product Ranking + than 5.000.000'))
# Save Cleaned File
path_file = os.path.join(BASE_DIR, 'csv/amazon_product_comparator.csv')
df_hc = df_clean_4.to_csv(path_file) 

该错误可以在行中找到:

A2

EN

回答 1

Data Science用户

回答已采纳

发布于 2020-04-14 17:19:51

编辑了

以包括一个工作示例.

我已经用字符串类型的数字数据做了一个例子。我还包括格式不佳的字符串编号1,002,*8320。

下面的代码将以数字和带有逗号的数字格式转换为浮点数,并将所有其他字符串转换为NaN。我使用正则表达式将逗号替换为空白。

必须在"“上使用NaN,因为比较运算符不能处理字符串。

代码语言:javascript
复制
import pandas as pd
import numpy as np
import re

# example data frame
df2 = pd.DataFrame([['1', '2000000000'],
                    ['2', '1,002,*8320'],
                    ['3', '1,000,000']],
                   columns = ['idx','product_ranking'])
# Remove Commas
df2['product_ranking'] = df2['product_ranking'].map(lambda x: re.sub('[,]*' , '', x))

# Remove Convert strings that are numeric into floats.
df2['product_ranking'] = df2['product_ranking'].map(lambda x: float(x) if x.isnumeric() else np.nan)

#Comparison is working
df2['product_ranking'] > 100000000
票数 1
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/72315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档