[英]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.