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