我正在处理价格数据的pandas dataframe df1
。
Item Price Minimum Most_Common_Price
0 Coffee 1 1 2
1 Coffee 2 1 2
2 Coffee 2 1 2
3 Tea 3 3 4
4 Tea 4 3 4
5 Tea 4 3 4
我使用以下技术创建了Minimum
:
df1["Minimum"] = df1.groupby(["Item"])['Price'].transform(min)
我该如何创建“Most_Common_Price”?
df1["Minimum"] = df1.groupby(["Item"])['Price'].transform(value_counts()) # Doesn't work
目前,我采用多步骤的方法:
for item in df1.Item.unique().tolist(): # Pseudocode
df1 = df1[df1.Price == Item] # Pseudocode
df1.Price.value_counts().max() # Pseudocode
这有点过度设计了。理想情况下,应该有一种更简单的方法,最好只用一行代码。
如何在pandas中将groupby().transform()转换为value_counts()?
pandas
对象的类型与numpy
类似,它们可以包含原始类型的数组,例如numpy.int64
,或者使用dtype=object
,这种情况下,它们可以包含 任何 Python 对象。请注意,通常会以效率为代价。 - juanpa.arrivillaga