【问题标题】:Get data from another data frame in python从python中的另一个数据框中获取数据
【发布时间】:2022-01-08 19:29:03
【问题描述】:
我的数据框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”和“日期”的数据。我发现合并数据很困难。我该怎么办?
【问题讨论】:
标签:
python
pandas
dataframe
merge
【解决方案1】:
你可以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
【解决方案2】:
将DataFrame.melt 与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