2016-12-29 83 views
0

我有以下熊貓數據幀,其中,柱Z可以具有未知數量的可能值,例如A,B,C,d,E ...:如何結合多索引和樞軸在熊貓中創建真值表?

X Y Z 
----- 
1 1 A 
1 1 B 
1 1 C 
1 2 A 
2 1 B 
2 1 C 
2 2 B 

我想上樞轉柱Z和在列X,Y上具有多索引以創建真值表,如下所示:

X Y A B C 
--------- 
1 1 T T T 
1 2 T F F 
2 1 F T T 
2 2 F T F 

如何在熊貓中執行此操作?

回答

1

下面的代碼做它(幾乎):

pd.get_dummies(df,'Z').groupby(['X','Y']).max() 

以下是更接近你問的確切輸出:

(pd.get_dummies(df,'Z') 
.groupby(['X','Y']) 
.max() 
.astype(bool) 
.applymap(lambda s: str(s)[0]) 
.rename(columns=lambda v: v.replace('Z_',''))) 
+0

而且......'astype(bool)'。 – Zero

+1

@Dov Grobgeld,較短的語法是:'pd.get_dummies(df,'','')。groupby(['X','Y']).max()。replace({1:'T' ,0:'F'})'和'reset_index()'以獲得OP想要的內容。 –

2

您還可以創建的Trues,然後一個值列使用pivot_table()

df["Value"] = True 
df.pivot_table("Value", ["X", "Y"], "Z", fill_value=False).reset_index() 

enter image description here