0

我的DataFrame大约有20列,混合列类型;其中之一是15到18位数字的ID号码。某些行没有ID号(列中有NaN)。在阅读.csv时,使用科学记数法编写身份证号码,失去了身份证号码的好处...熊猫格式 - 如何将DataFrame float64列(与NaNs)保存为int?

我试图找到一种方法将DataFrame保存为csv(使用.to_csv),而保持这个ID号完整的int形式。

我发现最接近的是Format/Suppress Scientific Notation from Python Pandas Aggregation Results,但它改变了所有的列,我只想改变那一列。

感谢您的帮助!

+1

对不起,'NaN'不能用'int'来表示,所以你需要决定你想要做什么,或者把它们放下或者把列转换为'str' – EdChum

+0

恐怕只有这样才能达到是''NaN'的占位符,就像一个特殊的负数:'-99999' – MaxU

+0

我认为最好的方法是将'ID'列转换为'read_csv'中的字符串,例如'read_csv(filename,dtype = {'ID ':str})' – jezrael

回答

0

正如MaxU在说评论,最好的方式可能是使用NaN的占位符。

我在我的列上使用了.fillna(-9999)来删除NaN,因此很容易将ID表示为int(使用.astype(int)或dtype)。

问题解决。感谢大家的帮助!

0

调用这里to_csv()

df.to_csv(filepath, index=False, sep='\t', float_format='%.6f') 

完整的答案时,您可以使用float_formatconvert scientific notation to decimal pandas python

在你的情况与ID的,你可以尝试改变6到0

+0

我意识到这不适用于单列。也许你可以应用一个函数到那个试图返回值为int的列。 –

+0

是的,我试过这个,但那么NaNs的问题来了... =/ – Flo

+0

你不想用-999或其他数字替换NaNs? –