Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-pandas-可以读取带有多个十进制标记的csv吗_Python_Pandas_Csv_Decimal - Fatal编程技术网

Python-pandas-可以读取带有多个十进制标记的csv吗

Python-pandas-可以读取带有多个十进制标记的csv吗,python,pandas,csv,decimal,Python,Pandas,Csv,Decimal,我正在尝试读取一个包含数百个浮动列的csv文件。其中一半有“.”作为小数点,其他的有“.”作为小数点,并且没有一个有任何千位分隔符,因此如果可以将pd.read_csv中的decimal参数设置为“.”或“.”会很有帮助,但似乎此参数只支持长度为1的小数点。 只有一半的my列使用float dtype导入到dataframe中。第二部分是对象数据类型,必须单独处理才能转换为float >>> import pandas as pd >>> df0 = pd.r

我正在尝试读取一个包含数百个浮动列的csv文件。其中一半有“.”作为小数点,其他的有“.”作为小数点,并且没有一个有任何千位分隔符,因此如果可以将pd.read_csv中的decimal参数设置为“.”或“.”会很有帮助,但似乎此参数只支持长度为1的小数点。 只有一半的my列使用float dtype导入到dataframe中。第二部分是对象数据类型,必须单独处理才能转换为float

>>> import pandas as pd
>>> df0 = pd.read_csv('example.csv')
>>> df0.head()
    col1   col2
0  123,2  12.02
1  22,15   1.50
>>> df0.dtypes
col1     object
col2    float64
dtype: object
>>> df1 = pd.read_csv('example.csv', decimal=',')
>>> df1.head()
     col1   col2
0  123.20  12.02
1   22.15    1.5
>>> df1.dtypes
col1    float64
col2     object
dtype: object

==>是否有任何pythonesque方法将所有列导入为浮点,并将“.”和“,”字符都视为小数点?

在读取文件之前,请使用以下方法:

with open("example.csv") as f:
    content = f.read()

content = content.replace('","','###')    #To prevent deleting required commas
content = content.replace(',','.')
content = content.replace('###','","')

with open("example.csv", "w") as f:
    content = f.write(content)

您可以选择
对象
,并将其转换为
浮动

obj = df0.select_dtypes(include=['object']).apply(lambda x: x.apply(lambda y: float(y.replace(',', '.'))))
df0[obj.columns] = obj 

我认为在阅读csv后,您需要将“.”替换为“.”。我认为正则表达式不能应用于十进制参数。