Сравните каждое значение Серии с любым другим значением из другой Серии в пандах - PullRequest
0 голосов
/ 01 июня 2018

Предположим, у меня есть два кадра данных панд

df = pd.DataFrame()
df['r_no'] = [1,1,1,2,3,1,1,1,2]
df['user'] = ['sam','sam','sam','sam','peter','jack','jack','Kris','peter']
df['value'] = [76,76,7,8,8,2,29,2,8]
df['cam_id'] = ['ab','abc','ab','ab','ab','abcd','abcd','abcd','ab']

df_2 = pd.DataFrame()
df_2['r_no'] = [1,3,2,2,4,1,1,3,2,5,7,2,8,9,3]

df
   r_no   user  value cam_id
0     1    sam     76     ab
1     1    sam     76    abc
2     1    sam      7     ab
3     2    sam      8     ab
4     3  peter      8     ab
5     1   jack      2   abcd
6     1   jack     29   abcd
7     1   Kris      2   abcd
8     2  peter      8     ab

df_2 
    r_no
0      1
1      3
2      2
3      2
4      4
5      1
6      1
7      3
8      2
9      5
10     7
11     2
12     8
13     9
14     3

Ожидаемый результат Новый столбец в df dataframe

df['count_greaterandequal']
0     3
1     3
2     3
3     7
4    10
5     3
6     3
7     3
8     7

для вычисления числа для r_no в df --- фрейм данных был равен или больше в df_2 --- фрейм данных

1 Ответ

0 голосов
/ 01 июня 2018

Используйте широковещательное сравнение для базовых массивов для оценки производительности.

df['count_greaterandequal'] = (df.r_no.values >= df_2.r_no[:, None]).sum(0)

df
   r_no   user  value cam_id  count_greaterandequal
0     1    sam     76     ab                      3
1     1    sam     76    abc                      3
2     1    sam      7     ab                      3
3     2    sam      8     ab                      7
4     3  peter      8     ab                     10
5     1   jack      2   abcd                      3
6     1   jack     29   abcd                      3
7     1   Kris      2   abcd                      3
8     2  peter      8     ab                      7
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...