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? –