我用Python编写了以下代码:
df=df.groupby(['card1', 'card2']).size().reset_index().rename(columns{0:'count'})
df['hand']=df['card1']+', '+df['card2']
df
给出以下输出:
card1 card2 count hand
2c 7h 1 2c, 7h
2c 7s 1 2c, 7s
7h 2c 1 7h, 2c
我想要这样的输出:
card1 card2 count hand
2c 7h 2 2c, 7h
2c 7s 1 2c, 7s
对我来说,哪张牌并不重要(因此输出1和3应该算作同一手牌。我不知道该怎么做。
答案 0 :(得分:1)
我会退后一步,通过np.sort
对每一行进行排序,然后使用groupby
+ size
:
cols = ['card1', 'card2']
res = pd.DataFrame(np.sort(df[cols].values, axis=1), columns=cols)\
.groupby(cols).size().rename('count').reset_index()
如果您需要用逗号分隔的系列,则在较小的结果上创建它会更有效:
res['hand'] = res['card1'] + ', ' + res['card2']
print(res)
card1 card2 count hand
0 2c 7h 2 2c, 7h
1 2c 7s 1 2c, 7s