Python-pandas-可以读取带有多个十进制标记的csv吗
我正在尝试读取一个包含数百个浮动列的csv文件。其中一半有“.”作为小数点,其他的有“.”作为小数点,并且没有一个有任何千位分隔符,因此如果可以将pd.read_csv中的decimal参数设置为“.”或“.”会很有帮助,但似乎此参数只支持长度为1的小数点。 只有一半的my列使用float dtype导入到dataframe中。第二部分是对象数据类型,必须单独处理才能转换为floatPython-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
>>> 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后,您需要将“.”替换为“.”。我认为正则表达式不能应用于十进制参数。