簡體   English   中英

將decimal轉換為字符串python

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM