Python Panda数据帧中筛选groupby数据的有效方法

Python Panda数据帧中筛选groupby数据的有效方法,python,pandas,bigdata,Python,Pandas,Bigdata,问题 我有两个数据帧帧A(保存一些原始数据)和帧B(保存阈值数据) 我的目标是为帧B中的每个id返回帧A中相应id的行,这些行是使用map s = df_a.id.map(dict(df_b[['id', 'A']].values)) df_a[df_a.A <= s] Out[35]: id A B C D 0 123 2019-09-10 00:00:00 1 True False 1 123 2019-09-

问题

我有两个数据帧
帧A
(保存一些原始数据)和
帧B
(保存阈值数据)

我的目标是为
帧B
中的每个id返回
帧A
中相应id的行,这些行是
使用
map

s = df_a.id.map(dict(df_b[['id', 'A']].values))
df_a[df_a.A <= s]

Out[35]:
    id                   A  B     C      D
0  123 2019-09-10 00:00:00  1  True  False
1  123 2019-09-10 00:10:00  1  True  False
3  456 2019-09-05 01:00:00  1  True  False
5  789 2019-09-10 10:00:00  1  True  False
6  789 2019-09-11 00:50:00  1  True  False
7  789 2019-09-12 12:00:00  1  True  False

将您的数据放入任何SQL数据库并在其中执行。@AidanGawronski,必须克服基础架构限制和跨团队/环境的复制:)很棒的解决方案,超快速@泰迪:很高兴我能帮忙:)。我还就清晰、详细的信息和样本对你的问题进行了投票。你显然在准备问题上花了很多精力+1.
    id                    A  B     C      D
0  123  2019-09-10 00:00:00  1  True  False
1  123  2019-09-10 00:10:00  1  True  False
3  456  2019-09-05 01:00:00  1  True  False
5  789  2019-09-10 10:00:00  1  True  False
6  789  2019-09-11 00:50:00  1  True  False
7  789  2019-09-12 12:00:00  1  True  False
   id                    A  B     C      D
0  123  2019-09-10 00:00:00  1  True  False
1  123  2019-09-10 00:10:00  1  True  False
2  123  2019-09-11 00:07:00  1  True  False
3  456  2019-09-05 01:00:00  1  True  False
4  456  2019-09-08 10:00:00  1  True  False
5  789  2019-09-10 10:00:00  1  True  False
6  789  2019-09-11 00:50:00  1  True  False
7  789  2019-09-12 12:00:00  1  True  False
    id                    A  B
0  123  2019-09-10 00:10:00  1
1  456  2019-09-05 01:00:00  1
2  789  2019-09-12 12:00:00  1
s = df_a.id.map(dict(df_b[['id', 'A']].values))
df_a[df_a.A <= s]

Out[35]:
    id                   A  B     C      D
0  123 2019-09-10 00:00:00  1  True  False
1  123 2019-09-10 00:10:00  1  True  False
3  456 2019-09-05 01:00:00  1  True  False
5  789 2019-09-10 10:00:00  1  True  False
6  789 2019-09-11 00:50:00  1  True  False
7  789 2019-09-12 12:00:00  1  True  False
(df_a.merge(df_b[['id', 'A']], on='id', how='left', suffixes=('','_y'))
     .query('A <= A_y').drop('A_y', 1))

Out[43]:
    id                   A  B     C      D
0  123 2019-09-10 00:00:00  1  True  False
1  123 2019-09-10 00:10:00  1  True  False
3  456 2019-09-05 01:00:00  1  True  False
5  789 2019-09-10 10:00:00  1  True  False
6  789 2019-09-11 00:50:00  1  True  False
7  789 2019-09-12 12:00:00  1  True  False