Сравните наличие столбца в DF с другим DF, затем заполните - PullRequest
0 голосов
/ 02 марта 2020

У меня есть 2 DF, где я хочу проверить, находится ли df1 ["A"] в df2. Если не заполнить df2 ["A"] 0.

Я получил это и уродливо для l oop, и я пытаюсь оптимизировать это, но я не могу найти, как это сделать.

testing_list = list(testing_df.columns)

for i in range(len(training_df.columns)):
    if not training_df.columns[i] in testing_list:
        testing_df[training_df.columns[i]] = 0

1 Ответ

1 голос
/ 02 марта 2020

Используйте DataFrame.reindex с новыми столбцами, созданными Index.union:

testing_df = pd.DataFrame({
        'A':list('abcdef'),
         'B':[4,5,4,5,5,4],
         'F':list('aaabbb')
})

training_df = pd.DataFrame({
        'A':list('abcdef'),
         'C':[7,8,9,4,2,3],
         'D':[1,3,5,7,1,0],

})

cols = testing_df.columns.union(training_df.columns, sort=False)
df = testing_df.reindex(cols, axis=1, fill_value=0)
print (df)
   A  B  F  C  D
0  a  4  a  0  0
1  b  5  a  0  0
2  c  4  a  0  0
3  d  5  b  0  0
4  e  5  b  0  0
5  f  4  b  0  0

Если хотите добавить столбцы для обоих фреймов данных с отсортированными столбцами, используйте DataFrame.align:

testing_df, training_df = testing_df.align(training_df, fill_value=0)
print (testing_df)
   A  B  C  D  F
0  a  4  0  0  a
1  b  5  0  0  a
2  c  4  0  0  a
3  d  5  0  0  b
4  e  5  0  0  b
5  f  4  0  0  b

print (training_df)
   A  B  C  D  F
0  a  0  7  1  0
1  b  0  8  3  0
2  c  0  9  5  0
3  d  0  4  7  0
4  e  0  2  1  0
5  f  0  3  0  0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...