[英]convert decimal to string python
我導入制表符分隔文件以創建具有以下label
的數據幀( df
):
label
1
2
3
1
這存儲為pandas.core.series.Series,我想將其轉換為字符串格式,以便在將其寫入文本文件時可以刪除小數。
df.class_label=df.label.fillna('')
df.to_string(columns=['label'],index=False)
變量類型仍然是Series
,輸出(文本文件)也有小數:
1.0 2.0 3.0 1.0
如何擺脫這些小數?
您可以使用to_string()
方法的float_format
關鍵字參數:
df.to_string(columns=['label'], index=False, float_format=lambda x: '{:d}'.format(x))
使用astype(int)
會將float
更改為int
並根據需要刪除.0
。
import pandas as pd
df = pd.DataFrame({'label': [1.0, 2.0, 4.0, 1.0]})
print(df)
label
0 1.0
1 2.0
2 4.0
3 1.0
df.label = df.label.astype(int)
print(df)
label
0 1
1 2
2 4
3 1
這里我們不需要將其轉換為字符串。 這將在導出到.csv
或.txt
,並將保留int
。
我認為你有一些NaN
值,所以int
被轉換為float
因為na類型的促銷 。
所以你可以在列label
讀取數據為str
,然后它很好用:
import pandas as pd
import numpy as np
import io
temp=u"""lab1;label
5;1
5;2
7;
7;3
"""
#after testing replace io.StringIO(temp) to filename
df = pd.read_csv(io.StringIO(temp), sep=';', dtype={'label':str})
print (df)
lab1 label
0 5 1
1 5 2
2 7 NaN
3 7 3
df['class_label'] = df.label.fillna('')
print (df)
lab1 label class_label
0 5 1 1
1 5 2 2
2 7 NaN
3 7 3 3
print (df.to_string(columns=['class_label'],index=False))
class_label
1
2
3
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.