pandas가 범주형 데이터 열 (즉 dtype = "category")에서 DataFrames를 병합 할 수 있는지 이해하려고합니다.범주 형 시리즈의 팬더 데이터 프레임 병합
대부분의 데이터는 R에서 작동하지만 파이썬/팬더에서 더 많은 작업을 수행하려고합니다. R에서 요소 (범주 형 dtype과 유사)를 병합하면 형식 강제 변환이 일반적으로 문자에 적용됩니다. 이렇게하면 하나의 데이터 프레임이 요인 (범주 형)으로 지정된 by-variable (조인 열)을 가지며 by-variable을 문자열로 가질 수 있습니다. pandas는 병합/결합 이전에 범주 형 데이터를 문자열과 비슷한 방식으로 수행합니까? 카테고리 분류 병합이 강력 할 것으로 기대합니까? 팬더에서 (자동) 유형 강요에 관한 문서는 어디에서 찾을 수 있습니까?
간단한 예 :
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