У меня есть 2 кадра данных: a и b.
Когда я запускаю print(a.shape, b.shape)
, я получаю следующий результат: (1, 28849) (44, 29025)
что означает, что b имеет больше столбцов, которые a. Когда я запускаю b.columns.difference(a.columns)
результат имеет нулевой индекс: (Index([], dtype='object'
). Я получаю тот же результат, когда я запускаю a.columns.difference(b.columns)
. Почему числовые кадры имеют разные столбцы в форме, но между ними нет разных столбцов?
Почему числовые кадры имеют разные столбцы в форме, но между ними нет разных столбцов?
Пустой двунаправленный pd.Index.difference
не гарантирует, что столбцы из 2-х кадров данных одинаковы. Рассмотрим следующий пример:
A = pd.DataFrame(columns=[1, 1, 2, 3, 4])
B = pd.DataFrame(columns=[1, 2, 3, 4])
A.columns.difference(B.columns) # Int64Index([], dtype='int64')
B.columns.difference(A.columns) # Int64Index([], dtype='int64')
pd.Index.difference
можно сравнить с set.difference
, то есть он не рассматривает дубликаты. Если вы печатаете столбцы явно, вы должны увидеть, что они разные.
Или, чтобы явно вычислить подсчеты каждого имени столбца, вы можете использовать numpy.unique
:
import numpy as np
print(np.unique(A.columns, return_counts=True))
(array([1, 2, 3, 4], dtype=int64), array([2, 1, 1, 1], dtype=int64))