Панды: считать значения в двух столбцах без учета порядка - PullRequest
0 голосов
/ 01 декабря 2018

У меня есть Pandas DataFrame в форме

df = pd.DataFrame({'1':['a','b','c'], '2':['b','a','d'], '3':['0.7','0.6','0.1']}).

Я бы хотел добавить в этот DataFrame столбец, содержащий количество раз, когда конкретная строка присутствует, без учета порядка (так какпервые два столбца являются узлами неориентированного графа).Более того, я хотел бы объединить те строки, которые отличаются только для порядка первых двух столбцов, и взять среднее значение чисел в третьем.В этом случае это должно быть

df = pd.DataFrame({'1':['a','c'], '2':['b','d'], '3':['0.65','0.1'], '4':['2','1']}).

Также следует учесть, что DataFrame содержит более 100 000 строк.

1 Ответ

0 голосов
/ 01 декабря 2018

Использование -

a=df[['1','2']].values
a.sort(axis=1)
df[['1','2']] = a
df.groupby(['1','2'])['3'].agg(['count','mean']).reset_index()

Выход

    1   2   count   mean
0   a   b   2   0.65
1   c   d   1   0.10

или

df[['1','2']] = df[['1','2']].sort_values(1,axis=1)
df.groupby(['1','2'])['3'].agg(['count','mean']).reset_index()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...