我有一個資料集,我已經像這樣過濾了

在這個資料框中的這個選擇中,我想替換"max“和"critical"列的值,因為“最大”列是錯誤的,它應該顯示當天污染物值的最大值('pm10','so2',' co', 'o3', 'no2') 并且關鍵列應顯示當天最大污染物的名稱
想要的結果是:
tanggal stasiun pm10 so2 co o3 no2 max critical categori
3515 2020-12-01 DKI1 (Bunderan HI) 22 17 4 19 8 22 PM10 BAIK
3516 2020-12-02 DKI1 (Bunderan HI) 25 18 4 28 7 28 o3 BAIK
3518 2020-12-04 DKI1 (Bunderan HI) 39 29 8 52 17 52 o3 SEDANG
3520 2020-12-06 DKI1 (Bunderan HI) 31 22 7 30 9 31 pm10 BAIK
3521 2020-12-07 DKI1 (Bunderan HI) 25 22 6 18 9 25 pm10 BAIK
uj5u.com熱心網友回復:
首先是必要的選擇列進行處理 - 例如按名字和姓氏DataFrame.loc:
df1 = df.loc[:, 'pm10':'no2']
或洗掉max并獲取數字列DataFrame.select_dtypes:
df1 = df.drop(['max'], axis=1).select_dtypes(np.number)
但是因為有非數字列首先將它們轉換為數字:
#for integers
df1 = df.loc[:, 'pm10':'no2'].astype(int)
#or for numeric if some bad values (strings)
df1 = df.loc[:, 'pm10':'no2'].apply(pd.to_numeric, errors='coerce')
然后分配max和DataFrame.idxmax:
df['max'] = df1.max(axis=1)
df['critical'] = df1.idxmax(axis=1)
print (df)
tanggal stasiun pm10 so2 co o3 no2 max critical \
3515 2020-12-01 DKI1 (Bunderan HI) 22 17 4 19 8 22 pm10
3516 2020-12-02 DKI1 (Bunderan HI) 25 18 4 28 7 28 o3
3518 2020-12-04 DKI1 (Bunderan HI) 39 29 8 52 17 52 o3
3520 2020-12-06 DKI1 (Bunderan HI) 31 22 7 30 9 31 pm10
3521 2020-12-07 DKI1 (Bunderan HI) 25 22 6 18 9 25 pm10
categori
3515 BAIK
3516 BAIK
3518 SEDANG
3520 BAIK
3521 BAIK
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/390662.html
上一篇:按照下圖轉換熊貓資料框
下一篇:敵人的精靈不會向左翻轉
