我有一個如下所示的資料框
ID raw_val var_name constant s_value
1 388 Qty 0.36 -0.032
2 120 Qty 0.36 -0.007
3 34 Qty 0.36 0.16
4 45 Qty 0.36 0.31
1 110 F1 0.36 -0.232
2 1000 F1 0.36 -0.17
3 318 F1 0.36 0.26
4 419 F1 0.36 0.31
我的目標是
a) 找出for >=0raw_val的每個值的上限和下限 (of )var_names_value
b) 找到<0raw_val的每個值var_name的上限和下限 (of )s_value
我嘗試了以下
df['sign'] = np.where[df['s_value']<0, 'neg', 'pos']
s = df.groupby(['var_name','sign'])['raw_val'].series
df['buckets'] = pd.IntervalIndex.from_arrays(s)
請注意,我的真實資料是大資料,列有 200 多個唯一值var_name。對于列的每個值,正負值 ( s_value) 的分布可能不均勻var_name。在示例 df 中,我展示了 pos 和 neg 值的均勻分布,但在現實生活中可能并非如此。
我希望我的輸出如下
var_name sign low_limit upp_limit
Qty neg 120 388
F1 neg 110 1000
Qty pos 34 45
Qty pos 318 419
uj5u.com熱心網友回復:
我認為numpy.where聚合最小值和最大值是這樣的:
df['sign'] = np.where(df['s_value']<0, 'neg', 'pos')
df1 = (df.groupby(['var_name','sign'], sort=False, as_index=False)
.agg(low_limit=('raw_val','min'), upp_limit=('raw_val','max')))
print (df1)
var_name sign low_limit upp_limit
0 Qty neg 120 388
1 Qty pos 34 45
2 F1 neg 110 1000
3 F1 pos 318 419
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/466670.html
標籤:Python 熊猫 数据框 麻木的 熊猫-groupby
