Подсчитать, сколько раз значение из одного кадра данных повторялось в другом кадре данных - PullRequest
0 голосов
/ 06 июня 2018

У меня есть 3 кадра данных, скажем, A, B и C с общим столбцом 'com_col' во всех трех кадрах данных.Я хочу создать новый столбец с именем 'com_col_occurferences' в B, который должен быть рассчитан, как показано ниже.Для каждого значения в 'com_col в кадре данных B проверьте, доступно ли значение в A или нет.Если оно доступно, верните, сколько раз значение имело место в A. Если это не так, проверьте в C, доступно ли оно или нет, и если оно есть, то верните, сколько раз оно повторялось.Пожалуйста, скажите мне, как написать функцию для этого в Pandas.Пожалуйста, найдите ниже пример кода, который демонстрирует проблему.

import pandas as pd 

#Given dataframes
df1 = pd.DataFrame({'comm_col': ['A', 'B', 'B', 'A']})

df2 = pd.DataFrame({'comm_col': ['A', 'B', 'C', 'D', 'E']})

df3 = pd.DataFrame({'comm_col':['A', 'A', 'D', 'E']})  

# The value 'A' from df2 occurs in df1 twice. Hence the output is 2. 
#Similarly for 'B' the  output is 2. 'C' doesn't occur in any of the 
#dataframes. Hence the output is 0
# 'D' and 'E' occur don't occur in df1 but occur in df3 once. Hence 
#the output for  'D' and 'E' should be 1

#Output should be as shown below
df2['comm_col_occurrences'] = [2, 2, 0, 1, 1]

Output:

**df1**
         comm_col
0        A
1        B
2        B
3        A

**df3**
         comm_col
0        A
1        A
2        D
3        E

**df2**

         comm_col  
0        A         
1        B         
2        C         
3        D         
4        E  

**Output**
     comm_col  comm_col_occurrences
0        A                     2
1        B                     2
2        C                     0
3        D                     1
4        E                     1

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

1 Ответ

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

Вам нужно:

result = pd.DataFrame({
    'df1':df1['comm_col'].value_counts(),
    'df2':df2['comm_col'].value_counts(),
    'df3':df3['comm_col'].value_counts()
})
result['comm_col_occurrences'] = np.nan
result.loc[result['df1'].notnull(), 'comm_col_occurrences'] = result['df1']
result.loc[result['df3'].notnull(), 'comm_col_occurrences'] = result['df3']
result['comm_col'] = result['comm_col'].fillna(0)
result = result.drop(['df1', 'df2', 'df3'], axis=1)

Вывод:

    comm_col  comm_col_occurrences
0        A                   2.0
1        B                   2.0
2        C                   0.0
3        D                   1.0
4        E                   1.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...