繁体   English   中英

如何基于两个不同数据帧的列创建新的df?

[英]How to create new df based on columns of two different data frames?

我正在研究以下数据帧,尽管原始数据帧非常大,有数千行,但出于说明目的,我使用了许多基本的df。

我的第一个df是:

        ID      value
    0   3       7387
    1   8       4784
    2   11      675
    3   21      900

还有另一个巨大的df,例如df2

        x            y          final_id
    0   -7.35        2.09       3
    1   -6.00        2.76       3
    2   -5.89        1.90       4
    3   -4.56        2.67       5
    4   -3.46        1.34       8
    5   -4.67        1.23       8
    6   -1.99        3.44       8
    7   -5.67        2.40       11
    8   -7.56        1.66       11
    9   -9.00        3.12       21
    10  -8.01        3.11       21 
    11  -7.90        3.19       22

现在,从第一个df开始,我只考虑“ ID”列,并将其值与第二个数据帧(df2)中的“ final_id”列匹配。

我想创建另一个仅包含df2过滤行的df,即仅包含“ final_id”为3、8、11、21的行(根据df1的“ ID”列)。

下面将是结果df:

         x            y         final_id
    0   -7.35        2.09       3
    1   -6.00        2.76       3
    2   -3.46        1.34       8
    3   -4.67        1.23       8
    4   -1.99        3.44       8
    5   -5.67        2.40       11
    6   -7.56        1.66       11
    7   -9.00        3.12       21
    8   -8.01        3.11       21

我们可以看到df2中的第2、3、11行已从结果df中删除。

请帮忙。

您可以使用isin创建掩码,然后使用布尔掩码将df2子集化:

mask = df2["final_id"].isin(df["ID"])
print(df2[mask])

        x      y    final_id
0   -7.35   2.09    3
1   -6.00   2.76    3
4   -3.46   1.34    8
5   -4.67   1.23    8
6   -1.99   3.44    8
7   -5.67   2.40    11
8   -7.56   1.66    11
9   -9.00   3.12    21
10  -8.01   3.11    21

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM