排序,存储并将功能应用于DataFrame

时间:2020-06-18 10:58:34

标签: pandas dataframe

我有以下示例数据框:

pd.DataFrame({'Name': ['A', 'B', 'C', 'D', 'E'],
              'Score': [2, 6, np.nan, 3, 4],
              'Value 1': [10, 30, 20, 5, 15],
              'Value 2': [400, 250, 100, 300, 150]})

         Name   Score   Value 1 Value 2
0          A    2.0      10      400
1          B    6.0      30      250
2          C    NaN      20      100
3          D    3.0       5      300
4          E    4.0      15      150

我想根据“得分”的排序将此数据帧存储到:[最高四分位数,第二四分位数,第三四分位数,底部四分位数,无等级],然后计算(例如)落入的值的平均值“值1”和“值2”中的相应存储区。因此,得分的NaN应该落在“无评级”类别中,“值1”中的NaN应该落在“前四分位数”中,而“值2”中的250应该放在“前四分位数”中,因为得分最高(6和30分别是单个数字的平均值)本身。)

1 个答案:

答案 0 :(得分:1)

您可以按以下方式应用qcut;

df['bucket'] = pd.qcut(df['Score'], 4, ['q1','q2','q3','q4'])
df.groupby('bucket')[['Value 1','Value 2']].mean()

通常,它将排除NaN,因此我将bucket列更改为str,或者您可以应用fillna将值指定为NaN。

df['bucket'] = df['bucket'].astype(str)
df.groupby('bucket')[['Value 1','Value 2']].mean()