Python 中的双向查找

Two-Way lookup in Python

所以基本上我有 2 个像这样的 DataFrame:

Table_1

Apple Banana Orange Date
1 2 4 2020
3 5 2 2021
7 8 9 2022

Table_2

fruit year
Apple 2020
Apple 2021
Apple 2022
Banana 2020
Banana 2021
Banana 2022
Orange 2020
Orange 2021
Orange 2022

所以我想根据水果名称和相应的年份从 Table_1 中查找 Table_2 的水果值。

最终结果应该是这样的:

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

在 Excel 中举个例子,可以这样做:

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

但是在Python中有什么方法呢?

假设 ,您可以 meltmerge

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