每个tim返回不同的值

2024-03-29 01:10:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个系列,其中包括一些随机产品的清单。这就是我打印描述的样子:

<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()函数应该返回一个包含唯一值计数的序列。如果每次返回的序列都完全相同,那么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和熊猫


Tags: the代码valueprodproductmaxfacecounts
1条回答
网友
1楼 · 发布于 2024-03-29 01:10:16

关于熊猫如何处理捆绑值,似乎一直存在着不一致的看法。你知道吗

至于idxmax()documentation明确指出:

If multiple values equal the maximum, the first row label with that value is returned.

恐怕您提供的信息量不足以让我用您的数据生成一个完整的示例,但下面是一个尝试:

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

相关问题 更多 >