У меня есть набор данных, который выглядит следующим образом:
Interactor A Interactor B Interaction Score score2
0 P02574 P39205 0.928736 0.375000
1 P02574 Q6NR18 0.297354 0.166667
2 P02574 Q7KML4 0.297354 0.142857
3 P02574 Q9BP34 0.297354 0.166667
4 P02574 Q9BP35 0.297354 0.16666
data.shape = (112049, 5)
Я хочу добавить Interactor B
в конце столбца Interactor A
и добавить столбец, который показывает их ранг. Я сделал это:
cols = [data[col].squeeze() for col in data[['Interactor A','Interactor B']]]
n =pd.concat(cols, ignore_index=True)
n = pd.DataFrame(n,columns = ['AB'])
, чтобы сделать столбец уникальным:
t = pd.unique(n['AB'])
t= pd.DataFrame(t, columns=[ "AB"])
затем:
t2 = n.groupby(['AB'],sort=False).size()
t2 = pd.DataFrame(t2)
наконец: путем объединения t2 и t:
data_1 = pd.concat([t,l], axis=1)
AB Rank
0 P02574 4
data.shape = (13631, 2)
Теперь я хочу добавить столбцы Interaction Score
и score2
в DF. если есть дубликаты, возьмите среднее значение их Interaction Score
, удалите дубликаты и замените значение Interaction Score
на среднее.
Я использовал:
score2 = data.groupby(['Interactor A','Interactor B'])['score2'].mean()
score2 = pd.DataFrame(score2, columns=['score2'])
, вывод в этот случай похож на:
score2
Interactor A Interactor B
A0A023GPK8 Q9VQW1 0.200000
A0A076NAB7 Q9VYN8 0.000000
A0A0B4JD97 Q400N2 0.000000
Q9VC64 0.090909
Q9VNE4 0.307692
112049 rows × 1 columns
, но я должен добавить столбцы со средним значением столбцов 'score2'
и 'Interaction Score'
для 13631 уникальных данных, которые я сделал. Как можно этого добиться ?? пожалуйста помоги. итоговый df должен выглядеть следующим образом:
Оценка Интерактора Оценка взаимодействий Score2 P02574 5 0,928736 0,44
ie: Score2 - это среднее значение всех оценок P0257, которые были в наборе данных