繁体   English   中英

Python panda read_csv在导入问题期间使用数据中的“-”值转换数据

[英]Python panda read_csv converting data during import problem with “-” value in data

我一直在努力解决这个问题。 我终于找到了发生这种情况的原因,但还找不到解决方案。

我正在导入从网络上其他资源中抓取的data.csv。 它们的大部分是字符串,需要除去,例如“%”。 使用自定义转换器时,它的工作原理就像一种魅力。

但是,当一列包含带有“-”(无值)的行时,它会在convert_percentage中返回错误“文件“ D:test.py”,第14行,返回float(new_val)ValueError:无法将字符串转换为float: '-'“

我正在使用以下代码行:

import pandas as pd
import numpy as np

def convert_percentage(val):
    new_val = val.replace(',','').replace('%', '')
    return float(new_val)


df = pd.read_csv('data.csv', na_values=['-'],   
            converters={
                'Perf Month': convert_percentage, 
                'Perf Week': convert_percentage,
                'Perf Quarter': convert_percentage,
                'Perf Half Y': convert_percentage,
                'Payout': convert_percentage,

                })

我建议你这样做:

def convert_percentage(val):
    new_val = val.replace(',','').replace('%', '')
    try:
        return float(new_val)
    except ValueError:
        return new_val

显然,您可以根据要返回的内容添加更多收益。 如果您认为应该每次检查if,请有条件返回。 但是,如果错误异常(从统计角度上讲),则try/except块是最佳选择。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM