我有一个系列,其中包含一些随机产品的列表。这是我打印描述时的样子:
<bound method NDFrame.describe of 176 reversible jacket
231 the north face resolve 2 jacket
234 columbia pike lake jacket
279 girl's 7-16 knitworks skater belted dress faux...
303 flocked quilted jacket
...
7665 tommy hilfiger big boys wayne colorblocked bas...
7685 men's toronto raptors columbia red flash forwa...
7796 the north face uo exclusive topography fanorak...
7809 lauren ralph lauren solid ultraflex classic-fi...
7922 tommy hilfiger sport faux-sherpa colorblocked ...
Name: desc, Length: 146, dtype: object>
<class 'pandas.core.series.Series'>
我这之后有这两个陈述
max_occurence_prod = prod.where(prod.str.len() > 1)
curr_product = max_occurence_prod.value_counts().idxmax()
但是,每次我运行这段代码时,的值curr_product
似乎都不同。例如,我第一次运行此代码时,值curr_product
是“ diamond quilted packable jacket
”,第二次是“ boys' logan jacket
”
据我了解,该value_counts()
函数应该返回一个包含唯一值计数的Series。如果此系列每次都idxmax()
返回完全相同的值,那么是否也应该返回相同的对应值?我似乎无法弄清楚为什么每次都会返回不同的值。
这是整体代码
max_occurence_prod = prod.where(prod.str.len() > 1)
curr_product = max_occurence_prod.value_counts().idxmax()
#new value is printed each time
print(max_occurence_prod.value_counts().idxmax())
抱歉,如果还不清楚,我是Python和Pandas的新手
似乎以前有一些关于大熊猫如何value_counts()
以不一致的方式处理相关价值的问题。
至于idxmax()
该文件明确规定:
如果多个值等于最大值,则返回具有该值的第一行标签。
恐怕您提供的信息量不足以让我用您的数据生成完整的示例,但这是一种尝试:
import pandas as pd
data = {'col_1':['a','a','b','b','c','c'],'col_2':['one','two','three','one','two','three']}
df = pd.DataFrame(data)
for i in range(3):
print(df['col_1'].value_counts().idxmax())
在命令中运行一次:
c
c
c
第二次指挥:
b
b
b
第三次:
a
a
a
结论是,由于value_counts()
而不是,您每次都会获得不同的值idxmax()
。使其始终可复制的一些解决方案也要使用sort_index()
,以使输出不依赖于随机值。例如:
for i in range(3):
print(df['col_1'].value_counts().sort_index().idxmax())
始终返回:
a
a
a
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句