【问题标题】:Import csv file using pandas and split the resulting strings使用 pandas 导入 csv 文件并拆分生成的字符串
【发布时间】:2017-12-09 06:15:51
【问题描述】:

我想在 pandas 中将这个 csv file 作为 DataFrame 阅读。然后我想将生成的字符串从冒号中拆分出来。

我使用以下方式导入:

df_r = pd.read_csv("report.csv", sep=";|,", engine="python")

然后使用分割:

for c in df_r:
    if df_r[c].dtype == "object":
        df_r[c] = df_r[c].str.split(':')

但我收到以下错误:

ValueError: could not convert string to float: '"\x001\x000\x00'

知道我做错了什么吗?

编辑:

当我尝试将其中一个字符串转换为浮点数时,实际显示的错误

print(float(df_r["Laptime"].iloc[0][2]))

【问题讨论】:

    标签: python csv pandas import


    【解决方案1】:

    我运行了您的代码,一切正常。您可以尝试捕获错误并打印具有这种奇怪行为的行并手动检查。

    这是您正在使用的整个转储吗?我看到您将 csv 分配给变量 a 并在之后使用 df_r 所以我认为您正在做其他事情。

    如果 csv 文件完整,请注意最后一行是空的,并创建一个充满 NaN 的行。你想用skipfooter=1阅读csv。

    a = pd.read_csv('report.csv', sep=";|,", engine="python", skipfooter=1)
    

    编辑
    您可以像这样将其转换为浮点数:

    print(float(df_r["Laptime"].iloc[0][2].replace(b'\x00',b'')))
    

    【讨论】:

    • 一开始我没有正确地问我的问题。我做了一个编辑。当我尝试将其中一个字符串转换为浮点数时,就会显示该错误。请你也检查一下。
    • @FariborzGhavamian 答案已修改。让我知道这是否适合您。
    • 确实如此,谢谢@Andrea!只是一个小小的修改。我不得不将 .replace(b'\x00',b''))) 更改为 .replace('\x00','')))。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-14
    • 1970-01-01
    • 2010-10-31
    • 2011-10-19
    • 2017-02-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多