gpt4 book ai didi

python - Pandas 根据另一个数据框中 2 列的值过滤行

转载 作者:行者123 更新时间:2023-12-04 08:57:23 25 4
gpt4 key购买 nike

假设我们有 2 个 dfs。
df1:

        Product   Name1    Name2
0 ABC aaa bbb
1 ASD sss ddd
2 ZCX xxx NaN
3 QWE qqq NaN
4 IOP iii ooo
df2:
        Title     Col1     Col2
0 aaaLKJ ... ...
1 zzzMNB ... ...
2 dddKJH ... ...
3 ooo123 ... ...
4 aaa098 ... ...
5 ttt676 ... ...
输出 df 应包含所有 df2 行,其中“标题”以 df1 的“Name1”或“Name2”开头。
        Title     Col1     Col2
0 aaaLKJ ... ...
2 dddKJH ... ...
3 ooo123 ... ...
4 aaa098 ... ...
请让我知道如何实现这一点。我已经尝试了 df.loc、isin、str.contains 的几种方法,但没有运气......

最佳答案

您可以构建一个列表,其中包含 df1 中两列的所有名称。 ,并使用 Series.str.startswithTitledf2 ,这也适用于 tuple字符串,查找以 names 中的任何术语开头的字符串:

names = df1.filter(like='Name').stack().to_numpy()
# array(['aaa', 'bbb', 'sss', 'ddd', 'xxx', 'qqq', 'iii', 'ooo'], dtype=object)
df2 = df2[df2.Title.str.startswith(tuple(names))]

print(df2)
Title Col1 Col2
0 aaaLKJ ... ...
2 dddKJH ... ...
3 ooo123 ... ...
4 aaa098 ... ...

关于python - Pandas 根据另一个数据框中 2 列的值过滤行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63740793/

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