我有一個包含 30-40 列的 Pandas 資料框,其中包含 1 或 0。如何獲得一個 Ints 等于對應字串的二進制數的新列?例如,第一行應該給出
int('10101',2)
>>> 21
| f22 | f43 | f242 | f243 | f244 |
|---|---|---|---|---|
| 1 | 0 | 1 | 0 | 1 |
| 1 | 0 | 1 | 0 | 0 |
| 0 | 0 | 0 | 0 | 1 |
| 1 | 0 | 1 | 0 | 1 |
| 0 | 0 | 0 | 0 | 1 |
uj5u.com熱心網友回復:
我們可以通過數學方法來實作,方法是根據 DataFrame 的寬度創建一系列 2 的冪。然后mul和sum跨行:
s = pd.Series(reversed([2 ** i for i in range(df.columns.size)]),
index=df.columns)
df['result'] = df.mul(s, axis=1).sum(axis=1)
df:
f22 f43 f242 f243 f244 result
0 1 0 1 0 1 21
1 1 0 1 0 0 20
2 0 0 0 0 1 1
3 1 0 1 0 1 21
4 0 0 0 0 1 1
s 以供參考:
f22 16
f43 8
f242 4
f243 2
f244 1
dtype: int64
設定和匯入:
import pandas as pd
df = pd.DataFrame({
'f22': [1, 1, 0, 1, 0],
'f43': [0, 0, 0, 0, 0],
'f242': [1, 1, 0, 1, 0],
'f243': [0, 0, 0, 0, 0],
'f244': [1, 0, 1, 1, 1]
})
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/333191.html
上一篇:子串的總和等于一個沒有匯入的數字
