为什么pandas.to_csv为整数写浮点数?

时间:2014-05-02 15:23:17

标签: python csv types pandas type-conversion

我有以下代码来解析一些csv数据。关键是最后几行,其余的只是显示上下文。基本上,我的数据最后有三列,ID变量LopNr和year应该有“无论如何”整数,但我将整个DataFrame转换为整数以防万一。为什么我在生成的csv文件中得到LopNr和year列的“.0”,而带有聚合数据的第三列实际上转换为整数并且输出时没有“.0”?我原以为在.astype(int)之后所有列都会有整数,而我们导出到csv而不将它们转换回浮点数。

import iopro
from pandas import *

neuro   = DataFrame()
for year in xrange(2005,2012):
    for month in xrange(1,13):
        if year == 2005 and month < 7:
            continue
        filename = 'Q:\\drugs\\lmed_' + str(year) + '_mon'+ str(month) +'.txt'
        adapter = iopro.text_adapter(filename,parser='csv',field_names=True,output='dataframe',delimiter='\t')
        monthly = adapter[['LopNr','ATC','TKOST']][:]
        monthly['year']=year
        neuro = neuro.append(monthly[(monthly.ATC.str.startswith('N')) & (~(monthly.TKOST.isnull()))])

neuro = neuro.groupby(['LopNr','year']).sum()
neuro = neuro.astype(int)
neuro.to_csv('Q:\\drugs\\annual_neuro_costs.csv')

1 个答案:

答案 0 :(得分:3)

这可能是因为您的'LopNr'和'year'列具有空值。目前,pandas不支持具有空值的整数列,而是将整个列上转换为float。

http://pandas.pydata.org/pandas-docs/stable/gotchas.html#nan-integer-na-values-and-na-type-promotions