我是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'
答案 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]