python的双向查找

发布于 2025-02-04 14:23:50 字数 3434 浏览 3 评论 0原文

因此,基本上我有2个类似的数据框架:

table_1

苹果香蕉日期
1242020
3522021
7892022

Table_2

fruitYear
苹果2020
苹果2021
苹果2022
苹果2022
香蕉香蕉2021
香蕉2021
2022橙色2020橙色2022
橙色2022
橙色2022,

所以我想要根据水果名和各个年份从表_1中查找表_2的水果值。

应该看起来像这样:

水果年号最终结果
苹果20201
苹果20213
苹果20227
香蕉20202
香蕉20215
香蕉20228
橙色20204
橙色20212
橙色20229

在Excel中,一个人可以做这样的事情:

=INDEX(Table1[[Apple]:[Orange]],MATCH([@year],Table1[Date],0),MATCH([@fruit],Table1[[#Headers],[Apple]:[Orange]],0))

但是在Python中可以做什么?

So basically I have 2 DataFrames like this:

Table_1

AppleBananaOrangeDate
1242020
3522021
7892022

Table_2

fruityear
Apple2020
Apple2021
Apple2022
Banana2020
Banana2021
Banana2022
Orange2020
Orange2021
Orange2022

So I want to lookup the values for the fruits for Table_2 from the Table_1 based on the fruit name and the respective year.

The final outcome should look like this:

fruityearnumber
Apple20201
Apple20213
Apple20227
Banana20202
Banana20215
Banana20228
Orange20204
Orange20212
Orange20229

In the Excel for an example one can do something like this:

=INDEX(Table1[[Apple]:[Orange]],MATCH([@year],Table1[Date],0),MATCH([@fruit],Table1[[#Headers],[Apple]:[Orange]],0))

But what is the way to do it in Python?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

递刀给你 2025-02-11 14:23:50

假设 pandas ,您可以Melelt 和合并

out = (df2
   .merge(df1.rename(columns={'Date': 'year'})
              .melt('year', var_name='fruit', value_name='number'),
           how='left'
          )
)

输出:

    fruit  year  number
0   Apple  2020       1
1   Apple  2021       3
2   Apple  2022       7
3  Banana  2020       2
4  Banana  2021       5
5  Banana  2022       8
6  Orange  2020       4
7  Orange  2021       2
8  Orange  2022       9

Assuming , you can melt and merge:

out = (df2
   .merge(df1.rename(columns={'Date': 'year'})
              .melt('year', var_name='fruit', value_name='number'),
           how='left'
          )
)

output:

    fruit  year  number
0   Apple  2020       1
1   Apple  2021       3
2   Apple  2022       7
3  Banana  2020       2
4  Banana  2021       5
5  Banana  2022       8
6  Orange  2020       4
7  Orange  2021       2
8  Orange  2022       9
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文