pandas factorize
函数将系列中的每个唯一值分配给一个从 0 开始的顺序索引,并计算每个系列条目属于哪个索引。
我想在多个列上完成与 pandas.factorize
等效的操作:
import pandas as pd
df = pd.DataFrame({'x': [1, 1, 2, 2, 1, 1], 'y':[1, 2, 2, 2, 2, 1]})
pd.factorize(df)[0] # would like [0, 1, 2, 2, 1, 0]
也就是说,我想确定一个数据帧的几列中每个唯一的值元组,为每个值分配一个顺序索引,并计算数据帧中的每一行属于哪个索引。
Factorize
仅适用于单列。 pandas中是否有多列等价函数?
最佳答案
您需要先创建一个元组的 ndarray,pandas.lib.fast_zip
可以在 cython 循环中非常快速地执行此操作。
import pandas as pd
df = pd.DataFrame({'x': [1, 1, 2, 2, 1, 1], 'y':[1, 2, 2, 2, 2, 1]})
print pd.factorize(pd.lib.fast_zip([df.x, df.y]))[0]
输出是:
[0 1 2 2 1 0]
关于python - Pandas 的多列分解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16453465/