Использование функций в каждой строке для возврата нового фрейма данных - PullRequest
0 голосов
/ 25 февраля 2019

У меня большой фрейм данных с более чем 1000 строк.Я могу найти наиболее похожие строки по определенному индексу, используя косинусное сходство, и соответствующим образом взвесить их.Итак, мой фрейм данных Similar_rows выглядит следующим образом ...

например.Similar_rows (60):

    A  B  C   Weight
0   5  6  7     0.2
1   8  3  2     0.3
2   1  4  6     0.1

Я умножаю каждое значение на столбец веса, а затем нахожу среднее значение по всем строкам, поэтому мой результат будет таким:

    A      B     C  
0  1.16  0.83  0.86

Какмогу ли я применить эту функцию ко всем 1000 строкам, чтобы у меня остался кадр данных, например, такой:

      A       B     C
0    0.1     0.24  0.5
1    0.3     0.2   0.3 
.     .       .     . 
.     .       .     . 
1000  0.12   0.45  0.67

Заранее спасибо ...

Ответы [ 2 ]

0 голосов
/ 25 февраля 2019

Вы можете использовать следующий код:

import pandas as pd
#import numpy as np

df = df = pd.DataFrame({'A':[5,8,1],"B":[6,3,4],"C":[7,2,6],"Weight":[0.2,0.3,0.1]}) 
print(df)

Out[47]: 
   A  B  C  Weight
0  5  6  7     0.2
1  8  3  2     0.3
2  1  4  6     0.1

Не нужно использовать apply здесь:

temp = pd.DataFrame({'A':df['A']*df['Weight'],'B':df['B']*df['Weight'],'C':df['C']*df['Weight']})
print(temp)

     A    B    C
0  1.0  1.2  1.4
1  2.4  0.9  0.6
2  0.1  0.4  0.6

Далее применить mean функция

temp.mean(axis=1)

0    1.200000
1    1.300000
2    0.366667
dtype: float64

Я применил только 3 значения для каждого столбца.

0 голосов
/ 25 февраля 2019

Посмотрите на функцию apply из pandas.DataFrame:

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.apply.html#pandas-dataframe-apply

Вы можете создать функцию, которая будет обновлять каждую строку с любым желаемым результатом с помощьюте же операции (как встроенная функция map в списках)

Также обратите внимание, что эта функция будет применяться вдоль оси, поэтому позаботьтесь о том, какую из них вы выберете

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...