是否有一种方便的方法可以根据数据框中其他列的值计算列的百分位数。 即每种类型玩具的价格的第10个百分点
我有一种方法可以获得我的答案,但是它很长,并且在较大的数据集上效果不佳
import pandas as pd
import numpy as np
data = {'Toy': ['Truck', 'Truck', 'Truck', 'Barbie', 'Snake', 'Barbie'],
'Colour': ['Blue', 'Orange', 'Green', 'Pink','Green','Red'],
'Price': [4, 6, 8, 5, 9, 4]}
df = pd.DataFrame(data)
df
df2 = df.groupby(['Toy'])['Price'].agg([np.sum,np.mean, lambda x:np.percentile(x,q= 10)]).reset_index()
df2
df_result = pd.merge(df,df2, on= 'Toy', how='left')
df_result
答案 0 :(得分:1)
我说你不需要这么复杂(创建另一个df,使用merge
等)。
你可以简单地做
res = df.groupby("Toy").Price.apply(np.percentile, 10)
并使用索引来匹配结果
df = df.set_index("Toy")
df.loc[:, "Percentile"] = res
df.reset_index()