Python 如何删除数据集中具有相同值但顺序不同的行?
我用Python编写了以下代码:Python 如何删除数据集中具有相同值但顺序不同的行?,python,pandas,dataframe,pandas-groupby,Python,Pandas,Dataframe,Pandas Groupby,我用Python编写了以下代码: df=df.groupby(['card1', 'card2']).size().reset_index().rename(columns{0:'count'}) df['hand']=df['card1']+', '+df['card2'] df 这将提供以下输出: card1 card2计数手 2c 7h 1 2c,7h 2c 7s 1 2c,7s 7h 2c 1 7h,2c 我希望得到如下输出: card1 card2计数手 2c 7h 2c,7h 2
df=df.groupby(['card1', 'card2']).size().reset_index().rename(columns{0:'count'})
df['hand']=df['card1']+', '+df['card2']
df
这将提供以下输出:
card1 card2计数手
2c 7h 1 2c,7h
2c 7s 1 2c,7s
7h 2c 1 7h,2c
我希望得到如下输出:
card1 card2计数手
2c 7h 2c,7h
2c 7s 1 2c,7s
对我来说,哪张卡是第一张并不重要(因此输出1和3应该被算作同一只手。我不知道如何做到这一点。我会后退一步,通过对每一行进行排序,然后使用
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
这会导致以下错误:TypeError:“@Jan,请参阅更新,由于输入数据帧不仅仅由字符串组成,因此您似乎需要按列进行筛选。