根据特定的列分位数获取pandas数据帧记录

时间:2018-05-01 09:38:41

标签: python pandas dataframe

我想获取数据框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

Retrieve the Kth quantile within each group in Pandas

相关

1 个答案:

答案 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