我想通過選擇每個組的兩個值(定義為分位數)之間的行來過濾我的資料集。具體來說,我有一個資料集
import pandas as pd
df = pd.DataFrame({'day': ['one', 'one', 'one', 'one', 'one', 'one', 'two', 'two', 'two', 'two', 'two'],
'weather': ['rain', 'rain', 'rain', 'sun', 'sun', 'sun', 'sun', 'rain', 'rain', 'sun', 'rain'],
'value': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]})

我想選擇值在 0.1 和 0.9 分位數之間的行,每天和每個天氣。我可以通過計算分位數
df.groupby(['day', 'weather']).quantile([0.1, .9])
但后來我覺得卡住了。將結果資料集與原始資料集連接起來很浪費(原始資料集可能很大),我想知道是否有類似的東西
df..groupby(['day', 'weather']).select('value', between=[0.1, 0.9])
uj5u.com熱心網友回復:
轉換value為quantile
g = df.groupby(['day', 'weather'])['value']
df[df['value'].between(g.transform('quantile', 0.1), g.transform('quantile', 0.9))]
day weather value
1 one rain 2
4 one sun 5
8 two rain 9
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/476623.html
標籤:熊猫 数据框 熊猫-groupby
上一篇:合并具有多個條件的2個資料框
