Можно ли объединить две таблицы, которые имеют некоторые сходства - PullRequest
0 голосов
/ 17 сентября 2018

Я новый пользователь Python и пытаюсь объединить фреймы данных, которые имеют один столбец с похожей информацией.

Data 1           Data2
DocID GroupID    DocID ClassID
122     A12      121     A
122     A24      121     B
123     C12      122     C
124     C23      123     C
125     A12      123     D

Я надеюсь, что результат будет таким

Results
          DocID  121  122  123  124  125
GroupID ClassID
  Null     A      1    0    0    0    0
  Null     B      1    0    0    0    0
  A12      C      0    1    0    0    0
  A24      C      0    1    0    0    0
  C12      C      0    0    1    0    0
  C12      D      0    0    1    0    0
  A12     Null    0    0    0    0    1

На самом деле, я думаю о функции сопоставления и удаления Null.

Ответы [ 2 ]

0 голосов
/ 17 сентября 2018

Используйте merge и get_dummies

df2 = df.merge(df1, on='DocID', how='outer').set_index(['GroupID','ClassID'])

df2 = pd.get_dummies(df2.DocID).sort_index(level=0) 
print (df2)

Выход:

                      121    122      123    124    125
GroupID  ClassID                    
    NaN     A          1      0        0      0      0
            B          1      0        0      0      0
    A12    NaN         0      0        0      0      1
            C          0      1        0      0      0 
    A24     C          0      1        0      0      0
    C12     C          0      0        1      0      0
            D          0      0        1      0      0
    C23    NaN         0      0        0      1      0
0 голосов
/ 17 сентября 2018
import pandas as pd
data1 = pd.DataFrame({'DocID': [122,122,123,124,125], 'GroupID': ['A12','A24', 'C12', 'C23', 'A12']})
data2 = pd.DataFrame({'DocID': [121,121,122,123,123], 'ClassID': ['A','B', 'C', 'C', 'D']})
merged_data = pd.merge(data1, data2, on='DocID', how='outer')
merged_data.set_index(['GroupID', 'ClassID'], inplace=True)
result = pd.get_dummies(merged_data, columns=['DocID'], prefix='', prefix_sep='')
result.sort_values(sorted(result.columns), ascending=False, inplace=True)
result
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...