Как удалить строки в pandas df, которые имеют одинаковые значения, но в разной последовательности? - PullRequest
0 голосов
/ 06 ноября 2018

Я написал следующий код на 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 должны учитываться как одна и та же рука. Я не могу понять, как это сделать.

1 Ответ

0 голосов
/ 06 ноября 2018

Я бы сделал шаг назад, отсортировал каждую строку с помощью 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...