计算组合的出现次数

时间:2018-03-19 01:17:22

标签: python python-3.x

我正在尝试为两列的每个组合创建一个计数表。这是我能想到的最好的,但我不知道如何以正确的形式得到它。是否有方法或其他方法可以使这更容易?

from itertools import product
d = {'ballot1': ['a','b','a','a','b','a','a','b'],
     'ballot1_x':['c','c','d','d','a','a','a','a']}
df1=pd.DataFrame(d)
for i in product(set(df1['ballot1']), set(df1['ballot1_x'])):
    print(str(i[0])+str(i[1]))

目标(作为数据框):

  a  b
c 1  1
d 2  0
a 2  2

1 个答案:

答案 0 :(得分:2)

您可以尝试使用pandas(detail documentation)中的crosstab

from pandas import crosstab
d = {'ballot1': ['a','b','a','a','b','a','a','b'],
     'ballot1_x':['c','c','d','d','a','a','a','a']}
df1=pd.DataFrame(d)

result_df = crosstab(df1['ballot1_x'], df1['ballot1'])
print(result_df)

结果:

     ballot1    a  b
ballot1_x      
a               2  2
c               1  1
d               2  0