有没有办法成功导入一个带有德语/欧洲格式数字的文件(点替换为逗号,反之亦然)?你知道吗
你好
我正在尝试导入一个包含一些“德语/欧洲”格式的数字数据的文件,作为使用Python的Pandas中的数据帧。在应用了一些函数之后,我可以得到英文格式的数据,但是有一点小问题。你知道吗
问题:当缺少/空值时,我的方法失败。你知道吗
插图:我有一个巨大的文件,我用字符串导入它熊猫.read\scvdtype=object。让我把这个问题分解为
a=[['1.200,14','4.200'],['7.000','-0,03'],['78','1']] #Sample Data
df=pandas.DataFrame(a) #Conversion to Dataframe
locale.setlocale(locale.LC_ALL, 'deu_deu') #Changing to German Locale
Out[67]: 'German_Germany.1252'
df.applymap(locale.atof) # Converts String to Float
Out[68]:
0 1200.14 4200.00
1 7000.00 -0.03
2: 78.00 1.00
到现在,一切都好!你知道吗
现在,如果我导入的数据中缺少一个值,那么
atof函数-
a=[['1.200,14','4.200'],['7.000','-0,03'],['78','']] #Sample Data,with missing value
df=pandas.DataFrame(a) #Conversion to Dataframe
locale.setlocale(locale.LC_ALL, 'deu_deu') #Changing to German Locale
Out[67]: 'German_Germany.1252'
df.applymap(locale.atof) # Converts String to Float
Out[68]:
0 1200.14 4200.00
1 7000.00 -0.03
2: 78.00
df.applymap(locale.atof) # Converts String to Float, and I get a
ValueError: ('could not convert string to float: ', 'occurred at index 1')
这是可以理解的,因为空值不是作为字符串导入的,而是用FLOAT导入的,因此会导致错误。你知道吗
我怎样才能避免这个涉及缺失值的问题?你知道吗
我试着用逗号代替点,反之亦然结构更换('.','')。将('.','.')与lambda函数一起替换,并将其应用于每一列,但这是非常昂贵的操作,而且非常不整洁。你知道吗
有什么建议我可以解决这个问题,或者使用locale方法或者其他方法?编写一个函数并使用lambda/map解决了这个问题,但是代价非常高昂。我相信有更好的方法。在SAS中有类似于COMMAX12.2的信息,其中X表示德语格式,成功导入到那里非常容易。熊猫和Python有相似之处吗?你知道吗
敬请指正。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐