gpt4 book ai didi

python - 如何根据另一个 DataFrame 的条件从多索引 Dataframe 中选择重复子集

转载 作者:太空宇宙 更新时间:2023-11-03 15:32:45 24 4
gpt4 key购买 nike

我有一个如下所示的数据框:

                     dates         0
numbers letters
0 a 2013-01-01 0.261092
2013-01-02 -1.267770
2013-01-03 0.008230
b 2013-01-01 -1.515866
2013-01-02 0.351942
2013-01-03 -0.245463
c 2013-01-01 -0.253103
2013-01-02 -0.385411
2013-01-03 -1.740821
1 a 2013-01-01 -0.108325
2013-01-02 -0.212350
2013-01-03 0.021097
b 2013-01-01 -1.922214
2013-01-02 -1.769003
2013-01-03 -0.594216
c 2013-01-01 -0.419775
2013-01-02 1.511700
2013-01-03 0.994332
2 a 2013-01-01 -0.020299
2013-01-02 -0.749474
2013-01-03 -1.478558
b 2013-01-01 -1.357671
2013-01-02 0.161185
2013-01-03 -0.658246
c 2013-01-01 -0.564796
2013-01-02 -0.333106
2013-01-03 -2.814611

现在我得到了一个查询列表,例如:

   numbers letters
0 0 b
1 1 c
2 0 b

我需要选择索引满足列表的数据。答案是这样的:

                     dates         0
numbers letters
0 b 2013-01-01 -1.515866
2013-01-02 0.351942
2013-01-03 -0.245463
1 c 2013-01-01 -0.419775
2013-01-02 1.511700
2013-01-03 0.994332
0 b 2013-01-01 -1.515866
2013-01-02 0.351942
2013-01-03 -0.245463

如何从MultiIndex的Dataframe中选择特定数据来回答具有重复行的查询列表?需要注意的是,查询列表比数据帧的长度长得多。因此,我需要一个足够快的方法来解决这个问题。

(PS,还有另一个问题类似这个问题,但没有重复查询。 How to select a subset from a Multi-Index Dataframe based on conditions from another DataFrame )

最佳答案

如果将第二个 DataFrame 转换为 MultiIndex,则只需使用 .loc 选择第一个 DataFrame >

In [2]: idx = df2.set_index(['numbers', 'letters']).index

In [3]: print df.loc[idx]
dates 0
numbers letters
0 b 2013-01-01 -1.515866
b 2013-01-02 0.351942
b 2013-01-03 -0.245463
1 c 2013-01-01 -0.419775
c 2013-01-02 1.511700
c 2013-01-03 0.994332
0 b 2013-01-01 -1.515866
b 2013-01-02 0.351942
b 2013-01-03 -0.245463

关于python - 如何根据另一个 DataFrame 的条件从多索引 Dataframe 中选择重复子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42776227/

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