iT邦幫忙

0

我有一個sort_value 資料排序 出現亂排問題

  • 分享至 

  • xImage

如題目表示...
我使用pandas 整理表格,想找出max() 最大値,我使用了df.groupby('建物型態').max()['單價元平方公尺'] 感覺出來結果有點奇怪,於是我用下列程式去看:

bond=pd.read_csv('/content/drive/MyDrive/test/datahistory/c.csv',index_col='建物型態')
a=bond.loc['公寓']
aMax=a.sort_values(['單價元平方公尺'],ascending=False)
aMax

結果資料排序在萬分位 和十萬分位的地方出現問題:
https://ithelp.ithome.com.tw/upload/images/20221201/20155277bl0hiD2Nhb.jpg

新增程式如下(回覆討論):

bond=pd.read_csv('/content/drive/MyDrive/test/datahistory/c.csv',index_col='建物型態')
bond1=bond['單價元平方公尺'].str.replace(',','').astype('float')
a=bond1.loc['公寓']
a.sort_values()

結果:

https://ithelp.ithome.com.tw/upload/images/20221201/201552772G9VQa3atc.jpg

froce iT邦大師 1 級 ‧ 2022-12-01 12:40:53 檢舉
檢查那個欄位是str還是int啊...
真是一針見血...我已將欄位改成int,結果成功顯示正確排序,但是是以series 形式,不曉得有否什麼方式仍是以dataframe 方式顯示呢?
問題解決(已能改成dataframe)!謝謝!!
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
海綿寶寶
iT邦大神 1 級 ‧ 2022-12-01 13:42:43
最佳解答

試試看
加大欄寬(例:pd.set_option('display.width', None))

有點像是筆數過多的「略」的符號
/images/emoticon/emoticon25.gif

看更多先前的回應...收起先前的回應...
froce iT邦大師 1 級 ‧ 2022-12-01 15:06:21 檢舉

他不是問那個「...」啦,他應該是問排序,應該是由大到小怎麼會10萬以上的排在後面。
我猜他那個欄位資料類型是str

那改用 to_number ?

df.Col = pd.to_numeric(df.Col, errors='coerce')

/images/emoticon/emoticon25.gif

呃..我資料欄位是string沒錯... 謝謝兩位前輩回覆!!我做了一些修改,但結果仍不如預期顯示,可能資料格式觀念不是很熟悉,想請板上前輩們指出盲點:

df.單價元平方公尺 = pd.to_numeric(df.單價元平方公尺, errors='coerce')
df[df["建物型態"] == "公寓"]["單價元平方公尺"].max()

訊息結果:
Nan

參考這篇
加個 replace
,換掉

pd.to_numeric(df.str.replace(',',''), errors='coerce')

結果成功執行! 感謝您的耐心回覆~

我要發表回答

立即登入回答