我想获取数据框df
的记录,其列c
的值等于指定分位数的列表。
对于单个分位数这是有效的:
df = pd.DataFrame({'A': ['a', 'b', 'c', 'd', 'e'], 'C': [1, 2, 3, 4, 5]})
print(df[df['C'] == df['C'].quantile(q = 0.25)])
和输出:
A C
1 b 2
但它看起来很笨,但当有多个分位数时也会失败:print(df[df['C'] == df['C'].quantile(q = [0.25, 0.75])])
抛出ValueError: Can only compare identically-labeled Series objects
答案 0 :(得分:0)
你可以用这种方式做到:
您所要做的就是将所需的分位数保存在列表中:如下所示:
您的结果将在final_df
quantile_list = [0.1,0.5,0.4]
final_df = pd.DataFrame(columns = df.columns)
for i in quantile_list:
temp = df[df['c'] == df['c'].quantile(q = i)]
final_df = pd.concat([final_df,temp])
final_df.reset_index(drop=True,inplace=True) #optional incase you want to reset the index