我的目標是定義一個資料框矩陣 (df2),其行對應于公社,列對應于瑞士各州。我需要用 0/1 值填充矩陣,如果第 i 行中的公社位于第 j 列的州中,則條目 (i,j) 為 1,否則為 0。
[df1](引數):https ://i.stack.imgur.com/0u7w8.png
[df2](要填充的資料框):https ://i.stack.imgur.com/AR0mM.png
我嘗試做的是像這樣回圈:
for row in df2:
for column in df2.columns:
if column == df1.loc[row]:
df2[column] = 1
else:
df2[column] = 0
但它不運行。錯誤是關于“df1.loc[row]”
- 鍵錯誤:'ZH'
將不勝感激任何教育幫助。提前致謝 :)
uj5u.com熱心網友回復:
您可以使用第一個資料框生成交叉表或資料透視表,然后使用它來重新索引,如 df2:
out = pd.crosstab(df1.index, df1['Canton']).reindex_like(df2)
或者:
out = (df1
.reset_index()
.pivot_table(index='Commune', columns='Canton', aggfunc=lambda x: 1, fill_value=0)
.reindex_like(df2)
)
示例輸出:
Canton BS GE VD ZH
Commune
Basel 1 0 0 0
Genève 0 1 0 0
Lausanne 0 0 1 0
Zürich 0 0 0 1
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/492630.html
