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

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

防止 NaN 成為數據幀數據透視表中的索引和列

防止 NaN 成為數據幀數據透視表中的索引和列

UYOU 2021-08-17 16:56:31
我有一個數據框,我將其擴展為包含 2 列中所有增量的值。因此,正如預期和期望的那樣,引入了 NaN 值。但是,當我在這個數據框上使用數據透視表時,我會得到 NaN 的行和列。做樞軸時我可以防止這種情況嗎?如果沒有,如何刪除名為 NaN 的列?試圖通過調用 [NaN],[nan] 或 ['NaN'] 來刪除它是行不通的。刪除所有值為 NaN 的列和行在這種情況下不起作用,因為列標題和索引用于 seaborn 熱圖,因此即使所有單元格值都是 NaN,將其作為索引和鍵值仍然有用不是 NaN示例代碼;import pandas as pdimport numpy as np#generate dummy datadf = pd.DataFrame({'Y': np.random.randint(130,140,10),                   'X': np.random.randint(5,10,10),                   'Z': np.random.randint(0,25, size=10)})df = df.round(1)#create dataset for heatmap#group by axis to plotdf = df.groupby(['X','Y']).sum().reset_index()df = df.sort_values(by=['Y'])dfY = pd.DataFrame({'Y':np.arange(min(df['Y']), max(df['Y']),1)})dfX = pd.DataFrame({'X':np.arange(min(df['X']), max(df['X']),1)})df = pd.merge(df,dfY, how='outer', on='Y')df = pd.merge(df,dfX, how='outer', on='X')df = df.round(1)print(df)#restructure for heatmapdata = df.pivot("Y","X","Z").sort_values(by=['Y'],ascending=False)print(data)樞軸前的示例數據幀:      X      Y     Z0   5.0  132.0   0.01   5.0  135.0  20.02   5.0  137.0  17.03   7.0  132.0  15.04   7.0  133.0   3.05   6.0  133.0  30.06   6.0  135.0  22.07   6.0  138.0  16.08   9.0  135.0   9.09   NaN  134.0   NaN10  NaN  136.0   NaN11  8.0    NaN   NaN樞軸后:X       NaN    5.0   6.0   7.0   8.0   9.0Y                                          138.0   NaN   NaN  16.0   NaN   NaN   NaN 137.0   NaN  17.0   NaN   NaN   NaN   NaN 136.0   NaN   NaN   NaN   NaN   NaN   NaN 135.0   NaN  20.0  22.0   NaN   NaN   9.0 134.0   NaN   NaN   NaN   NaN   NaN   NaN 133.0   NaN   NaN  30.0   3.0   NaN   NaN 132.0   NaN   0.0   NaN  15.0   NaN   NaNNaN      NaN   NaN   NaN   NaN   NaN   NaN期望的輸出:X        5.0   6.0   7.0   8.0   9.0Y                                          138.0   NaN  16.0   NaN   NaN   NaN 137.0  17.0   NaN   NaN   NaN   NaN 136.0   NaN   NaN   NaN   NaN   NaN 135.0  20.0  22.0   NaN   NaN   9.0 134.0   NaN   NaN   NaN   NaN   NaN 133.0   NaN  30.0   3.0   NaN   NaN 132.0   0.0   NaN  15.0   NaN   NaN
查看完整描述

1 回答

?
胡說叔叔

TA貢獻1804條經驗 獲得超8個贊

對我來說,drop通過缺失值工作np.nan:


data = (df.pivot("Y","X","Z")

         .sort_values(by=['Y'],ascending=False)

         .drop(np.nan, axis=1)

         .drop(np.nan))

要么:


data = df.pivot("Y","X","Z").sort_values(by=['Y'],ascending=False)


data = data.reindex(index=data.index.difference([np.nan]),

                    columns=data.columns.difference([np.nan]))


查看完整回答
反對 回復 2021-08-17
  • 1 回答
  • 0 關注
  • 188 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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