如何组合Multi-index和pivot在Pandas中创建真值表?

时间:2016-12-29 12:45:24

标签: python pandas

我有以下Pandas DataFrame,其中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

我如何在熊猫中这样做?

2 个答案:

答案 0 :(得分:2)

您还可以创建Trues的值列,然后使用pivot_table()

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

enter image description here

答案 1 :(得分: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_','')))