亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將帶有“N/As”的 DataFrame 轉換為浮動以計算百分比變化

將帶有“N/As”的 DataFrame 轉換為浮動以計算百分比變化

海綿寶寶撒 2021-10-10 16:48:43
我正在嘗試將以下 DataFrame(包含幾個“N/As”)轉換為浮動,以便我可以執行百分比更改操作:d = pd.DataFrame({"A":['N/A','$10.00', '$5.00'],            "B":['N/A', '$10.00', '-$5.00']})最后,我希望結果是:(更新:我不想刪除原始的 N/A 值。我想將它們作為占位符保留在那里。)因為沒有處理負數的任何標志,所以我不能使用:pct_change(-1)所以,我需要使用:d['A'].diff(-1)/d['A'].shift(-1).abs()但是,我收到錯誤:TypeError: unsupported operand type(s) for -: 'str' and 'str'第一步,我試圖將數據從對象/字符串轉換為浮點數,但輸出是意外的(對我而言)。我得到浮點數 'NaNs' 而不是實際數字。>d['A_float'] = pd.to_numeric(d['A'], errors='coerce')>d        A         B  A_float0     N/A       N/A      NaN1  $10.00  -$100.00      NaN2   $5.00    -$5.00      NaN>d.dtypesA           objectB           objectA_float    float64dtype: object作為一個簡單的測試,我嘗試從值中減去“1”,但仍然得到浮點“NaN”。>d['A_float_minus1_test'] = pd.to_numeric(d['A'], errors='coerce')-1>d        A         B  A_float  A_float_minus1_test0     N/A       N/A      NaN                  NaN1  $10.00  -$100.00      NaN                  NaN2   $5.00    -$5.00      NaN                  NaN>d.dtypesA                       objectB                       objectA_float                float64A_float_minus1_test    float64dtype: object有沒有一種簡單的方法可以獲得以下結果?我的想法是將每個DataFrame列單獨更改為浮動,然后執行操作。必須有更簡單的方法。期望的輸出:(更新:我不想刪除原始的 N/A 值。我想將它們作為占位符保留在那里。)
查看完整描述

2 回答

?
慕姐8265434

TA貢獻1813條經驗 獲得超2個贊

要將您的列從字符串轉換為浮點數,您可以使用apply,如下所示:


d['A_float'] = d['A'].apply(lambda x: float(x.split('$')[1]) if x != '' else 0.0)

本x.split('$')[1]是用來去除$字符(最終前負)。


然后我不確定您要做什么,但是如果您要計算 A 與 B 的百分比,則可以這樣使用np.vectorize:


d['Percent'] = np.vectorize(percent)(d['A'],d['B'])

def percent(p1, p2):

     return (100 * p2) / p1


查看完整回答
反對 回復 2021-10-10
  • 2 回答
  • 0 關注
  • 221 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號