我有一個(gè)數(shù)據(jù)框,我將其擴(kuò)展為包含 2 列中所有增量的值。因此,正如預(yù)期和期望的那樣,引入了 NaN 值。但是,當(dāng)我在這個(gè)數(shù)據(jù)框上使用數(shù)據(jù)透視表時(shí),我會(huì)得到 NaN 的行和列。做樞軸時(shí)我可以防止這種情況嗎?如果沒(méi)有,如何刪除名為 NaN 的列?試圖通過(guò)調(diào)用 [NaN],[nan] 或 ['NaN'] 來(lái)刪除它是行不通的。刪除所有值為 NaN 的列和行在這種情況下不起作用,因?yàn)榱袠?biāo)題和索引用于 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)樞軸前的示例數(shù)據(jù)幀: 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 回答

胡說(shuō)叔叔
TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超8個(gè)贊
對(duì)我來(lái)說(shuō),drop通過(guò)缺失值工作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]))
添加回答
舉報(bào)
0/150
提交
取消