我有以下所有正值的資料框
V1 V2 V3 V4 V5
0 F1H5N4S2 10.751263 0.216574 0.703209 10.674107
1 F2H4N7 12.131079 0.000004 1.883824 0.018118
2 H12N2 11.075072 0.214872 0.000004 10.674107
3 H3N7 1.091061 0.000004 3.503290 0.091797
4 F2H4N5 0.590545 0.000004 1.730215 0.223571
當我嘗試使用 numpy(np) 中的以下語法將數值轉換為 log2
log2df = df.apply(lambda x: np.log2(x) if np.issubdtype(x.dtype, np.float) else x)
我得到以下資料框,其中 NaN 代替 log2(0.000004)。0.000004 恰好是我估算的資料框中的最小值。誰能幫我解決問題?謝謝
V1 V2 V3 V4 V5
0 F1H5N4S2 3.426434 -2.207070 -0.507974 3.416043
1 F2H4N7 3.600636 NaN 0.913664 -5.786433
2 H12N2 3.469244 -2.218451 NaN 3.416043
3 H3N7 0.125732 NaN 1.808710 -3.445414
4 F2H4N5 -0.759880 NaN 0.790951 -2.161198
uj5u.com熱心網友回復:
這對我來說很好,但要避免使用 apply。選擇數值型別并應用矢量運算:
cols = df.select_dtypes('number').columns
df[cols] = np.log2(df[cols])
輸出:
V1 V2 V3 V4 V5
0 F1H5N4S2 3.426434 -2.207068 -0.507975 3.416043
1 F2H4N7 3.600636 -17.931569 0.913664 -5.786432
2 H12N2 3.469244 -2.218451 -17.931569 3.416043
3 H3N7 0.125732 -17.931569 1.808710 -3.445409
4 F2H4N5 -0.759881 -17.931569 0.790951 -2.161195
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/424180.html
下一篇:基于單個向量化條件替換列中的值
