Добавить отсутствующие функции в dataframe - PullRequest
0 голосов
/ 28 января 2019

У меня есть 2 кадра данных TRAIN и TEST.Я хотел бы изменить TRAIN, добавив информацию, что он не содержит ни одного из элементов (Y2, Y3), которые находятся в TEST, но не в TRAIN.

TRAIN = pd.DataFrame({'X' : [1,1,1,1,1,2,2,2,2,2],
                      'Y1': [1,1,1,1,1,1,0,0,0,0],
                      'Y4': [1,1,0,0,0,0,0,0,0,0]})

TEST  = pd.DataFrame({'X' : [1,1,1,1,1,2,2,2,2],
                      'Y1': [1,1,0,1,0,1,0,0,0],
                      'Y2': [1,0,1,0,1,0,1,0,1],
                      'Y3': [1,1,0,1,1,0,0,0,0],
                      'Y4': [1,1,0,1,1,0,0,0,0]})

Я хотел бы:

TRAIN = pd.DataFrame({'X' : [1,1,1,1,1,2,2,2,2,2],
                      'Y1': [1,1,1,1,1,1,0,0,0,0],
                      'Y4': [1,1,1,1,1,1,0,0,0,0],
                      'Y2': [0,0,0,0,0,0,0,0,0,0],
                      'Y3': [0,0,0,0,0,0,0,0,0,0]})

Я пытался:

L_TRAIN = list(TRAIN)
L_TEST  = list(TEST)

def Diff(li1, li2): 
    li_dif = [i for i in li1 + li2 if i not in li1] 
    return li_dif

L_DIFF  = Diff(L_TRAIN, L_TEST)

TRAIN[L_DIFF] = 0

Но получил:

KeyError: "['Y2' 'Y3'] not in index"

1 Ответ

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

pandas не поддерживает присвоение значения нескольким столбцам, поэтому вам нужно перебирать его по одному:

import pandas as pd 

TRAIN = pd.DataFrame({'X' : [1,1,1,1,1,2,2,2,2,2],
                      'Y1': [1,1,1,1,1,1,0,0,0,0],
                      'Y4': [1,1,0,0,0,0,0,0,0,0]})

TEST  = pd.DataFrame({'X' : [1,1,1,1,1,2,2,2,2],
                      'Y1': [1,1,0,1,0,1,0,0,0],
                      'Y2': [1,0,1,0,1,0,1,0,1],
                      'Y3': [1,1,0,1,1,0,0,0,0],
                      'Y4': [1,1,0,1,1,0,0,0,0]})


diff_cols = set(TEST.columns)-set(TRAIN.columns)

for i in diff_cols:
    TRAIN[i] = 0

print(TRAIN)

Вывод:

   X  Y1  Y4  Y2  Y3                                                                                                                  
0  1   1   1   0   0                                                                                                                  
1  1   1   1   0   0                                                                                                                  
2  1   1   0   0   0                                                                                                                  
3  1   1   0   0   0                                                                                                                  
4  1   1   0   0   0                                                                                                                  
5  2   1   0   0   0                                                                                                                  
6  2   0   0   0   0 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...