我有一個矩陣形式的 Pandas Dataframe,它代表行和列中元素(人)之間的相似度得分。
| | A | B | C |
|------------|-----------|---- ------|----------|
| D | 0.4 | 0.1 | 0.1 |
| E | 0.2 | 0.1 | 0.4 |
| F | 0.9 | 0.4 | 0.3 |
此外,我還有這些元素的位置識別符號串列。
A - London
B - Sydney
C - Paris
D - Paris
E - Delhi
F - London
如果兩個元素之間的位置相同,我想遍歷矩陣并使相似度得分等于 0。在此示例中,我想將 A 和 F 的交集(0.9)和 D 和 C 的交集(0.1)分別替換為 0。
謝謝!
編輯:
我正在尋找的最終預期輸出如下:
| | A | B | C |
|------------|-----------|---- ------|----------|
| D | 0.4 | 0.1 | 0.0 |
| E | 0.2 | 0.1 | 0.4 |
| F | 0.0 | 0.4 | 0.3 |
uj5u.com熱心網友回復:
為匹配列名稱與城市創建了字典。然后是rename索引和列,并與 numpy 廣播進行比較,最后將掩碼傳遞給DataFrame.mask:
d = {'A': 'London', 'B': 'Sydney', 'C': 'Paris', 'D': 'Paris', 'E': 'Delhi', 'F': 'London'}
df1 = df.rename(index=d, columns=d)
df = df.mask(df1.index.to_numpy() == df1.columns.to_numpy()[:, None], 0)
print (df)
A B C
D 0.4 0.1 0.0
E 0.2 0.1 0.4
F 0.0 0.4 0.3
詳情:
print (df1)
London Sydney Paris
Paris 0.4 0.1 0.1
Delhi 0.2 0.1 0.4
London 0.9 0.4 0.3
print (df1.index.to_numpy() == df1.columns.to_numpy()[:, None])
[[False False True]
[False False False]
[ True False False]]
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/471311.html
標籤:Python python-3.x 熊猫 循环 矩阵
