如何根据多列来将数据框的一列与另一列进行匹配?

huangapple go评论144阅读模式
英文:

How to match one column of dataframe to another based on multiple columns?

问题

我需要从第一个数据框(2022年)中获取效率值,并将其放入第二个数据框(2023年),在所有定性列上进行匹配:“Country”,“State”,“District”,“Month”,“Type”和“Name”。

第一个数据框:

Country State District Year Month Type Name No of Jobs Hours Efficiency
美国 AL A 2022 1 AA 54 209 4
美国 AK B 2022 2 BB 65 382 6
美国 AZ C 2022 3 CC 78 838 11
美国 CA D 2022 4 DD 43 632 15
美国 MD E 2022 5 EE 24 194 8
美国 ME F 2022 6 FF 54 283 5

第二个数据框:

Country State District Year Month Type Name No of Jobs Hours Efficiency
美国 AL A 2023 1 AA 76 546 7
美国 AK B 2023 2 BB 52 301 6
美国 AZ C 2023 3 CC 41 455 11
美国 CA D 2023 4 DD 50 301 6
美国 MD E 2023 5 EE 85 537 6
美国 ME F 2023 6 FF 42 889 21

期望的输出:

Country State District Year Month Type Name No of Jobs Hours Efficiency
美国 AL A 2023 1 AA 76 294 4
美国 AK B 2023 2 BB 52 306 6
美国 AZ C 2023 3 CC 41 440 11
美国 CA D 2023 4 DD 50 735 15
美国 MD E 2023 5 EE 85 687 8
美国 ME F 2023 6 FF 42 220 5
英文:

I need to take the efficiency values from the first dataframe (2022) and put it into the second dataframe (2023), matching it on all the qualitative columns: "Country", "State", "District", "Month", "Type" and "Name"

First dataframe:

Country State District Year Month Type Name No of Jobs Hours Efficiency
USA AL A 2022 1 New AA 54 209 4
USA AK B 2022 2 New BB 65 382 6
USA AZ C 2022 3 Old CC 78 838 11
USA CA D 2022 4 New DD 43 632 15
USA MD E 2022 5 Old EE 24 194 8
USA ME F 2022 6 Old FF 54 283 5

Second dataframe:

Country State District Year Month Type Name No of Jobs Hours Efficiency
USA AL A 2023 1 New AA 76 546 7
USA AK B 2023 2 New BB 52 301 6
USA AZ C 2023 3 Old CC 41 455 11
USA CA D 2023 4 New DD 50 301 6
USA MD E 2023 5 Old EE 85 537 6
USA ME F 2023 6 Old FF 42 889 21

Desired output:

Country State District Year Month Type Name No of Jobs Hours Efficiency
USA AL A 2023 1 New AA 76 294 4
USA AK B 2023 2 New BB 52 306 6
USA AZ C 2023 3 Old CC 41 440 11
USA CA D 2023 4 New DD 50 735 15
USA MD E 2023 5 Old EE 85 687 8
USA ME F 2023 6 Old FF 42 220 5

答案1

得分: 1

我们可以使用 pandas 中的 merge 函数,根据多个列匹配一个 dataframe 中的行与另一个 dataframe。以下是代码示例,只需将 df1df2 替换为您的实际数据框架名称。

import pandas as pd

df1_selected = df1[['Country', 'State', 'District', 'Month', 'Type', 'Name', 'Efficiency']].rename(columns={'Efficiency': 'Efficiency_2022'})

df_merged = pd.merge(df2, df1_selected, on=['Country', 'State', 'District', 'Month', 'Type', 'Name'], how='left')

df_merged['Efficiency'] = df_merged['Efficiency_2022']

df_merged = df_merged.drop(columns=['Efficiency_2022'])

df_merged

请注意,这是一段用于在两个数据框架之间合并数据的示例代码。

英文:

We could use the merge function in pandas to match rows in one dataframe with another based on multiple columns. Here is the code below, just replace df1 and df2 with the actual names of your dataframes.

import pandas as pd

df1_selected = df1[['Country', 'State', 'District', 'Month', 'Type', 'Name', 'Efficiency']].rename(columns={'Efficiency': 'Efficiency_2022'})

df_merged = pd.merge(df2, df1_selected,  on=['Country', 'State', 'District', 'Month', 'Type', 'Name'], how='left')

df_merged['Efficiency'] = df_merged['Efficiency_2022']

df_merged = df_merged.drop(columns=['Efficiency_2022'])

df_merged

huangapple
  • 本文由 发表于 2023年6月13日 04:28:19
  • 转载请务必保留本文链接:https://go.coder-hub.com/76460111.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定