gpt4 book ai didi

python - 根据每个 ID 的阈值日期选择 pandas 中的行

转载 作者:行者123 更新时间:2023-12-01 00:10:09 36 4
gpt4 key购买 nike

我想从 pandas DataFrame 中选择行,其中每个 id 的记录都在特定日期之前。

每个 ID 都有一些阈值日期:

thresholds = pd.DataFrame({'id':[1, 2, 3], 'threshold_date':pd.date_range('2019-01-01', periods = 3)})
thresholds
id threshold_date
0 1 2019-01-01
1 2 2019-01-02
2 3 2019-01-03

我有一个 DataFrame,其日期在每个 id 的阈值日期之后:

df = pd.DataFrame({'id':[1, 1, 2, 2, 3, 3], 'threshold_date':pd.date_range('2018-12-30', periods = 6), 'value': [0.1, 0.2, 0.3, 0.1, 0.2, 0.3]})
df
id threshold_date value
0 1 2018-12-30 0.1
1 1 2018-12-31 0.2
2 2 2019-01-01 0.3
3 2 2019-01-02 0.1
4 3 2019-01-03 0.2
5 3 2019-01-04 0.3

df = pd.DataFrame({'id':[1, 1, 2], 'threshold_date':pd.date_range('2018-12-30', periods = 3), 'value': [0.1, 0.2, 0.3]})

我想过滤我的 DataFrame,以便每个 ID 的阈值日期之前只有行:

df_filt = pd.DataFrame({'id':[1, 1, 2], 'threshold_date':pd.date_range('2018-12-30', periods = 3), 'value': [0.1, 0.2, 0.3]})
id threshold_date value
0 1 2018-12-30 0.1
1 1 2018-12-31 0.2
2 2 2019-01-01 0.3

我该怎么做?

最佳答案

您可以使用merge来加入idquery来进行过滤:

(thresholds.merge(df,on='id',how='left',suffixes=('_x',''))
.query("threshold_date_x > threshold_date").reindex(columns=df.columns))
<小时/>
   id threshold_date  value
0 1 2018-12-30 0.1
1 1 2018-12-31 0.2
2 2 2019-01-01 0.3

关于python - 根据每个 ID 的阈值日期选择 pandas 中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59681271/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com