Я пытаюсь понять, поддерживает ли pandas объединение DataFrames на столбцах категориальных данных (т. Е. Dtype = "category").Объединение Pandas DataFrames в категориальных сериях
Я использую большинство своих данных в R, но пытаюсь сделать больше работы в Python/pandas. В R слияние по факторам (аналогично категориальному dtype) индуцирует принуждение типа, как правило, к характеру. Это позволяет одному кадру данных иметь переменную (столбец объединения), указанную как фактор (категориальный), а другой - свою переменную-строку. Помогают ли панды аналогичное принуждение категориальных данных к строке до слияния/присоединения? Должен ли я рассчитывать на то, что слияние с категориальными? Где я могу найти документацию о (автоматическом) типе принуждения в пандах?
Простой пример:
+++ Это ошибка, чтобы проверить категорический вектор для равенства в отношении не-категорического/нескалярного вектора:
In [52]:
import pandas as pd
a = pd.Series(['a','b','c'],dtype="category")
b = pd.Series(['a','b','c'],dtype="object")
c = pd.Series(['a','b','cc'],dtype="object")
In [54]:
a==b
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
...
TypeError: Cannot compare a Categorical for op <built-in function eq> with type <class 'numpy.ndarray'>. If you want to compare values, use 'series <op> np.asarray(cat)'.
+++ Но объединяет DataFrame на столбцах разного типа - одна категориальная, одна строка - не выдает ошибку (по крайней мере, в этом простом случае). Некоторые типы принуждения должно произойти:
In [59]:
A = pd.DataFrame({'A':a,'B':[1,2,3]})
B = pd.DataFrame({'A':b,'C':[4,5,6]})
print(A.merge(B,on='A'))
A B C
0 a 1 4
1 b 2 5
2 c 3 6