我相信對于有一定 Python 經驗的人來說,這是一個簡單的問題。我有一個這樣的資料框。我想要的是,如果行總和為 0,對角線值更改為 1。例如 df.loc[2,2] 和 df.loc[3,3] 變為 1。

我有這樣的代碼,但我知道 if 行肯定有幾個問題。
for i, j in zip(range(len(df.index)), range(len(df.columns))):
if i == j & df.iloc[[i]].sum(axis = 1) == 0:
df.loc[i, j] = 1
uj5u.com熱心網友回復:
假設您有一個方形資料幀,我們可以創建一個布爾掩碼,表示行總和為 的條件0,然后使用此掩碼更新資料幀的對角線值:
m = df.sum(1).eq(0)
df.values[m, m] = 1
1 2 3 4 5 6
1 0.997476 0.0 0.0 0.002414 0.000110 0.000000
2 0.000000 1.0 0.0 0.000000 0.000000 0.000000
3 0.000000 0.0 1.0 0.000000 0.000000 0.000000
4 0.000000 0.0 0.0 0.997281 0.002521 0.000173
5 0.000000 0.0 0.0 0.000693 0.999222 0.000054
6 0.000046 0.0 0.0 0.035641 0.964293 0.000000
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/329908.html
上一篇:如何從一個串列中選擇第一個元素并從另一個嵌套串列中選擇相應的元素
下一篇:AJAXPost呼叫無資料
