【发布时间】:2019-12-27 08:33:23
【问题描述】:
我有一个系列,其中包含一些随机产品的列表。如果我打印描述,这就是它的样子:
<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 和 Pandas 还很陌生
【问题讨论】:
-
请包含一个完整的可重现示例。还有,你为什么用
prod.where(prod.str.len() > 1)而不是prod[prod.str.len() > 1]? -
我需要一个系列而不是一个列表。我这样做的原因是因为我只需要那些字符串长度 > 1 的行。
-
prod[prod.str.len() > 1]正在做你想做的事。 -
prod[prod.str.len() > 1]将返回一个列表,而不是一个系列。我需要一个系列 -
错了。
prod[prod.str.len() > 1]计算为一个系列。你试过了吗?
标签: python python-3.x pandas