Python中用逗号作为小数点分隔符写csv

lf5gs5x2  于 12个月前  发布在  Python
关注(0)|答案(5)|浏览(100)

如何在Python中使用逗号作为小数点分隔符编写CSV文件?这个问题看起来很简单,但我今天花了很多时间也解决不了(谷歌搜索,在stackoverflow中搜索……)。
这不起作用:
file.to_csv('file.csv', index = False, sep = ";", float_format = ",")
输出csv中仍有“.”。
谢谢你的回答。

dgenwo3n

dgenwo3n1#

您可以使用decimal= ","直接使用逗号保存。这在pandas.DataFrame.to_csv()文档中有详细说明。
下面的代码应该可以工作:

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

dkqlctbz2#

您可以利用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)
xeufq47z

xeufq47z3#

我的解决方案:

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)
y1aodyip

y1aodyip4#

我的代码(我只需要读取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 = ",")
b4lqfgs4

b4lqfgs45#

我也遇到了同样的问题,并通过将dataframe的数据格式更改为数字格式来修复它。

with pd.ExcelWriter('OLS_results.xlsx', engine='xlsxwriter') as writer:
    df1 = df1.apply(pd.to_numeric, errors='ignore')
    df1.to_excel(writer)

相关问题