[英]Two-Way lookup in Python
所以基本上我有2个这样的DataFrame:
表格1
苹果 | 香蕉 | 橙子 | 日期 |
---|---|---|---|
1 | 2 | 4 | 2020 |
3 | 5 | 2 | 2021 |
7 | 8 | 9 | 2022 |
表_2
水果 | 年 |
---|---|
苹果 | 2020 |
苹果 | 2021 |
苹果 | 2022 |
香蕉 | 2020 |
香蕉 | 2021 |
香蕉 | 2022 |
橙子 | 2020 |
橙子 | 2021 |
橙子 | 2022 |
所以我想根据水果名称和相应的年份从 Table_1 中查找 Table_2 的水果值。
最终结果应如下所示:
水果 | 年 | 数字 |
---|---|---|
苹果 | 2020 | 1 |
苹果 | 2021 | 3 |
苹果 | 2022 | 7 |
香蕉 | 2020 | 2 |
香蕉 | 2021 | 5 |
香蕉 | 2022 | 8 |
橙子 | 2020 | 4 |
橙子 | 2021 | 2 |
橙子 | 2022 | 9 |
以 Excel 为例,可以执行以下操作:
=INDEX(Table1[[Apple]:[Orange]],MATCH([@year],Table1[Date],0),MATCH([@fruit],Table1[[#Headers],[Apple]:[Orange]],0))
但是在 Python 中这样做的方法是什么?
假设pandas ,您可以melt
和merge
:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.