Python panda read_csv在导入过程中转换数据,数据中带有“ - ”值

问题描述 投票:1回答:1

我一直在努力解决这个问题。我终于找到了它发生但却找不到解决方案的原因。

我正在导入从Web上的不同资源中删除的data.csv。它们的MOst是字符串,需要剥离,例如“%”。这就像使用自定义转换器的魅力。

但是只要列包含带“ - ”(无值)的行,它就会在convert_percentage返回float(new_val)中给出错误“File”D:test.py“,第14行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,

                })
python pandas
1个回答
0
投票

我建议你这样做:

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

显然,您可以根据要返回的内容添加更多回报。如果您认为每次都要检查if,请进行有条件的退货。但如果错误是例外(统计上讲),try/except块是最好的选择

© www.soinside.com 2019 - 2024. All rights reserved.