Python 以二进制计数值生成交叉表类型的数据帧

Python 以二进制计数值生成交叉表类型的数据帧,python,pandas,Python,Pandas,我有一个像这样的数据框 UIID ISBN a 12 b 13 我想将每个UUID与ISBN进行比较,并在数据帧中添加一个计数列 UUID ISBN Count a 12 1 a 13 0 b 12 0 b 13 1 如何在熊猫身上做到这一点。我知道crosstab函数也有同样的功能,但我希望数据采用这种格式。用于: 替代解决方案,包括: 您还可以使用pd.DataFrame.unstack: df = pd.cr

我有一个像这样的数据框

UIID  ISBN
a      12
b      13
我想将每个UUID与ISBN进行比较,并在数据帧中添加一个计数列

UUID ISBN Count
 a     12   1
 a     13   0
 b     12   0
 b     13   1
如何在熊猫身上做到这一点。我知道crosstab函数也有同样的功能,但我希望数据采用这种格式。

用于:

替代解决方案,包括:


您还可以使用
pd.DataFrame.unstack

df = pd.crosstab(df.UIID, df.ISBN).unstack().reset_index()
print(df)
   ISBN UIID  0
0    12    a  1
1    12    b  0
2    13    a  0
3    13    b  1
s = df.groupby(['UIID','ISBN']).size()
mux = pd.MultiIndex.from_product(s.index.levels, names=s.index.names)
df = s.reindex(mux, fill_value=0).reset_index(name='count')
print (df)
  UIID  ISBN  count
0    a    12      1
1    a    13      0
2    b    12      0
3    b    13      1
df = pd.crosstab(df.UIID, df.ISBN).unstack().reset_index()
print(df)
   ISBN UIID  0
0    12    a  1
1    12    b  0
2    13    a  0
3    13    b  1