从 python 中的另一个数据框中获取数据

Get data from another data frame in python

我的数据框 df1:

    ID    Date
0   90  02/01/2021
1   101 01/01/2021
2   30  12/01/2021

我的数据框df2:

    ID  City  01/01/2021    02/01/2021  12/01/2021
0   90    A     20            14          22
1   101   B     15            10          5
2   30    C     12            9           13

我需要在 df1 'New' 中创建一个列。它应该包含来自 df2 的关于 df1 的 'ID' 和 'Date' 的数据。我发现合并数据很困难。我该怎么做?

使用DataFrame.melt with DataFrame.merge:

df22 = df2.drop('City', 1).melt(['ID'], var_name='Date', value_name='Val')
df = df1.merge(df22, how='left')
print (df)
    ID        Date  Val
0   90  02/01/2021   14
1  101  01/01/2021   15
2   30  12/01/2021   13

您可以 meltmerge:

df1.merge(df2.melt(id_vars=['ID', 'City'], var_name='Date'), on=['ID', 'Date'])

输出:

    ID        Date City  value
0   90  02/01/2021    A     14
1  101  01/01/2021    B     15
2   30  12/01/2021    C     13

选择:

df1.merge(df2.melt(id_vars='ID',
                   value_vars=df2.filter(regex='/'),
                   var_name='Date'),
          on=['ID', 'Date'])

输出:

    ID        Date  value
0   90  02/01/2021     14
1  101  01/01/2021     15
2   30  12/01/2021     13