从 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
您可以 melt
和 merge
:
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