我为Python编写了一个程序,该程序读取熊猫中的csv文件,然后进行一些分析。不幸的是,一些使用我的程序的朋友使用的是欧洲计算机,例如,他们的csv文件使用逗号(,)分隔小数点,而我使用点(。)。在任何情况下,列之间的常规分隔符都将使用分号,因此在那里没有问题。
现在我在程序的开头有一个如下设置:
european_decimal=True #False
然后再
if european_decimal:
df1 = pd.read_csv(directory+filename,delimiter=";",decimal=",")
else:
df1 = pd.read_csv(directory+filename,delimiter=";")
这当然有效。但这确实很丑陋,并且要求不是计算机程序员的我的朋友来弄乱代码。有什么方法可以确定正在运行python程序的计算机是使用逗号还是句号作为分隔符?
后期编辑: 最后,我应用了@ALollz解决方案,然后我简单地将任何带逗号的字符串转换为带点的字符串:
for column in list_data_columns:
df1[column]=df1[column].astype(str).str.replace(",",".").astype(float)
答案 0 :(得分:2)
您正在寻找the locale
module,Doug Hellman在this Python Module Of The Week column中对此进行了充分的描述。
提示:您可能正在寻找locale.getlocale()['decimal_point']
和locale.getlocale()['mon_thousands_sep']
。