Python pandas: 将数据帧以整数形式输出为csv文件
Python pandas: 将数据帧以整数形式输出为csv文件
我有一个`pandas.DataFrame`,我希望将其导出为CSV文件。然而,pandas似乎将一些值写成`float`而不是`int`类型。我找不到如何更改这种行为。
构建数据框:
df = pandas.DataFrame(columns=['a','b','c','d'], index=['x','y','z'], dtype=int) x = pandas.Series([10,10,10], index=['a','b','d'], dtype=int) y = pandas.Series([1,5,2,3], index=['a','b','c','d'], dtype=int) z = pandas.Series([1,2,3,4], index=['a','b','c','d'], dtype=int) df.loc['x']=x; df.loc['y']=y; df.loc['z']=z
查看它:
>>>> df a b c d x 10 10 NaN 10 y 1 5 2 3 z 1 2 3 4
导出它:
>>>> df.to_csv('test.csv', sep='\t', na_rep='0', dtype=int) >>> for l in open('test.csv'): print l.strip('\n') a b c d x 10.0 10.0 0 10.0 y 1 5 2 3 z 1 2 3 4
为什么十位数有一个小数点?
当然,我可以将这个函数放入我的流水线中,重新转换整个CSV文件,但这似乎是不必要的:
def lines_as_integer(path): handle = open(path) yield handle.next() for line in handle: line = line.split() label = line[0] values = map(float, line[1:]) values = map(int, values) yield label + '\t' + '\t'.join(map(str,values)) + '\n' handle = open(path_table_int, 'w') handle.writelines(lines_as_integer(path_table_float)) handle.close()