【问题标题】:Write csv with a comma as decimal separator in python在python中用逗号写csv作为小数分隔符
【发布时间】:2020-10-14 11:57:30
【问题描述】:

如何在 Python 中使用逗号作为小数分隔符编写 CSV 文件?这个问题看起来很简单,但是我今天花了很多时间都无法解决(googleing,在stackoverflow中搜索...)。

这不起作用:

file.to_csv('file.csv', index = False, sep = ";", float_format = ",")

在输出 csv 中仍然有“.”。

感谢您的回答。

【问题讨论】:

标签: python pandas csv decimal comma


【解决方案1】:

您可以使用decimal= "," 直接用逗号保存。 这在 pandas.DataFrame.to_csv() 文档中有详细说明。

以下代码应该可以工作:

file.to_csv('file.csv', index = False, sep = ";", decimal= ",")

【讨论】:

    【解决方案2】:

    我的解决方案:

    import pandas as pd
    import numpy as np
    
    data = pd.read_csv(r'data.csv', decimal = ',')
    
    
    dims = data.columns[0:3]
    metrics = data.columns[3:]
    
    dims = data[dims].copy()
    metrics = data[dims].copy()
    
    dtypes=np.dtype([
        ('col1',str),
        ('col2',str),
        ('col3',str),
        ('col4',int),
        ('col5',int)])
    
    dataf = np.empty(0,dtype=dtypes)
    df = pd.DataFrame(dataf)
    
    data = pd.DataFrame({
        "col1": dims["col1"],
        "col2": dims["col2"],
        "col3": dims["col3"],
        "col4": dims["col4"],
        "col4": dims["col4"]})
    
    df = df.append(data)
    
    df[['col1',
        'col2',
        'col3']] = df[['col1',
        'col2',
        'col3']].replace('\;', ',', regex = True)
    
    df[['col4',
        'col5']] = df[['col4',
        'col5']].replace('\.', ',', regex = True)
    
    df = df.applymap(str)
    
    df.to_csv('new_file.csv', index = False)
    

    【讨论】:

    • @Daniel Ocando 你能看看我的解决方案并做简短的评论吗?
    • 代码似乎真的依赖于文件?您从中读取数据的 CSV 文件如何?
    【解决方案3】:

    您可以利用 pandas to_csv 方法并使用 decimal 参数将命令“,”指定为小数分隔符。

    编辑

    鉴于您发布的以下代码应该可以工作:

    import pandas as pd
    
    data = pd.read_csv(r'file.csv', sep = ',', decimal = '.')
    
    data.to_csv('foo.csv', decimal = ',', sep = ';', index = False)
    

    【讨论】:

    • 这不起作用,如果我使用 ...decimal = "," 在 outpuf 文件中仍然有 "."
    • 但是您使用的是 pandas 模块吗?您介意发布您正在使用的特定库和代码的minimum, reproducible example 吗?
    • @MiroslavAdamek 我更新了答案并发布了一个应该基于您提供的最小、可重现示例的工作。
    【解决方案4】:

    我的代码(我只需要读取小数点为“.”的csv并用“,”保存):

    import pandas as pd
    
    file = pd.read_csv(r'file.csv', decimal = ',')
    
    file = file.copy().replace(".", ",")
    
    file.to_csv('file_updated.csv', index = False, sep = ";", decimal = ",")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-16
      • 2016-02-10
      • 1970-01-01
      • 2012-11-24
      • 1970-01-01
      相关资源
      最近更新 更多