我试图了解pandas是否支持在分类数据列上合并DataFrame(即dtype =" category")。
我的大部分数据都在R中工作,但我正在尝试在Python / pandas中做更多的工作。在R中,合并因子(类似于分类dtype)诱导类型强制,通常是字符。这允许一个数据帧具有指定为因子(分类)的副变量(连接列),而另一个数据帧具有作为字符串的副变量。在合并/加入之前,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
答案 0 :(得分:3)