python - Pandas 的多列分解

标签 python pandas enumeration data-cleaning

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/

相关文章:

python - 具有时变截止频率的低通滤波器,使用 Python

Python OpenCV 模板匹配错误

javascript - 问题是在 django 中使用 ajax 保存多条记录

python:提取列值大于3的行

python - 从 Pandas Series 中选择行,其中行是数组

python - 进行 groupby 时保留其他列

c# - 枚举器实现 : Use struct or class?

python - 在循环中追加/扩展列表

c - 使用 typedef 的 C 枚举类型的值

java - 比较不同 jar 中公共(public)类的值