用熊猫对数据集进行因子分解

时间:2018-07-03 08:35:14

标签: python pandas dataset

我是Python的新手。我有一个熊猫数据框:

d={'col1': [100000, 939321, 28923,100000], 'col2': [-11234, 114567,21234,-11234]}               
mydata=pandas.DataFrame(data=d)

现在,我想将此数据帧转换为因子,以获得[1,2,3,1][1,2,3,1]

我尝试过:

from collections import Counter
mydata.col1.factorize(list(range(Counter(mydata.col1.factorize))),sort=True)

但是我得到了

factorize() got multiple values for argument 'sort'

1 个答案:

答案 0 :(得分:1)

这是因为您正在调用factorize作为pandas.Series对象的成员函数(在您的情况下,您是从mydata.col1调用它的)。在这种情况下,函数调用的第一个参数是sort选项,而您将另一个pandas.Series传递给它。有关功能的详细签名,请参见

https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.factorize.html

我怀疑您要尝试执行的操作是调用factorize模块的pandas函数。在这种情况下,调用的第一个参数是pandas.Series,第二个参数是sort选项

https://pandas.pydata.org/pandas-docs/version/0.22/generated/pandas.factorize.html

然后,代码的最后一行看起来像

pandas.factorize(mydata.col1, sort=True)

PS 我怀疑您想以上述方式访问上面的第一个元素

pandas.factorize(mydata.col1, sort=True)[0]