【问题标题】:Merging Data Frames on Unique Values在唯一值上合并数据框
【发布时间】:2021-12-14 00:53:23
【问题描述】:

我有 2 个数据框。一个是一个通用的“模板”,其中有一列日期,从现在开始到 4 天后每隔一小时显示一次。另一个 DF 里面有数据,比如纬度和经度,它也有一个日期列,但数据只有每 3 小时一次。我需要合并两个数据帧,以便 df2 中的每个 lat/lon 对都有一个来自 df1 的每小时。

DF1                                DF2 
Date                 Shift         Latitude  Longitude   Date                 Temp
2021-10-18 01:00:00  a1            39.9      -99.3       2021-10-18 18:00:00  34
2021-10-18 02:00:00  a2            39.9      -99.3       2021-10-18 21:00:00  36
.....                              .............
2021-10-18 21:00:00  b2            39.9      -99.3       2021-10-19 00:00:00  32

预期的最终数据帧

Latitude Longitude Date                 Shift           Temp
39.9     -99.3     2021-10-18 01:00:00  a1              NaN
39.9     -99.3     2021-10-18 02:00:00  a1              NaN
.....
39.9     -99.3     2021-10-18 17:00:00  b2              NaN
39.9     -99.3     2021-10-18 18:00:00  b2              34
39.9     -99.3     2021-10-18 19:00:00  b2              NaN

在 DF2 中,有 3,088 对唯一的纬度/经度对,并且每对独特的对都必须有一个 4 天的日期列,按小时计算。我的最终 DF 应该有 299,536 行。

【问题讨论】:

  • 您的预期输出中的b1 来自哪里?
  • 对不起,它们本来是 b2,它们来自 DF1 原始数据框
  • df2.merge(df1, on='Date', how='outer')?
  • 这样可以填充 DF1 中的每个日期。然而,DF2 中的每一对纬度/经度在 DF1 中没有每个日期。

标签: python pandas merge unique


【解决方案1】:

将 merge 与 how 和 on 选项一起使用。 来自熊猫docs

df1 = pd.DataFrame({'a': ['foo', 'bar'], 'b': [1, 2]})
df2 = pd.DataFrame({'a': ['foo', 'baz'], 'c': [3, 4]})
df1.merge(df2, how='inner', on='a')

会给你:

      a  b  c
0   foo  1  3

使用时:

df1.merge(df2, how='left', on='a')

会给你:

      a  b  c
0   foo  1  3.0
1   bar  2  NaN

【讨论】:

    猜你喜欢
    • 2014-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-13
    • 2015-03-29
    • 1970-01-01
    • 2020-09-03
    • 1970-01-01
    相关资源
    最近更新 更多