【问题标题】:Merging dataframes in pandas on 'date' only merges headers在“日期”上合并 pandas 中的数据帧仅合并标题
【发布时间】:2019-07-11 07:43:38
【问题描述】:

我目前正在尝试按各自的日期/时间列合并两个数据框。关于我的每个数据集的信息如下:

data1.head(5)
                  DATE     AA           ...        AB    AB2
0  2011-01-01 00:30:00     6135.998518  ...        0.0   80.331500
1  2011-01-01 01:00:00     5711.638352  ...        0.0   74.380500
2  2011-01-01 01:30:00     5455.901902  ...        0.0   82.742500
3  2011-01-01 02:00:00     5130.634418  ...        0.0  102.091667
4  2011-01-01 02:30:00     4854.064390  ...        0.0  113.467667

[5 rows x 30 columns]

data2.head(5)
        DATE            A DEM         A RRP  ...    AA7 RRP AB DEM       AB RRP
0  2006/01/01 00:30:00  8013.27833    19.67  ...    36.00  5657.67500    20.03
1  2006/01/01 01:00:00  7726.89167    18.56  ...    33.00  5460.39500    18.66
2  2006/01/01 01:30:00  7372.85833    19.09  ...    33.01  5766.02500    20.38
3  2006/01/01 02:00:00  7071.83333    17.40  ...    33.02  5503.25167    18.59
4  2006/01/01 02:30:00  6865.44000    17.00  ...    33.00  5214.01500    17.53

[5 rows x 11 columns]

我正在尝试的代码如下。

将 numpy 导入为 np 将熊猫导入为 pd

data1=pd.read_csv("1.csv")
data2=pd.read_csv("2.csv")

mergeddf = pd.merge(data1[['DATE','AA','AA2','AB']],
                                 data2[['DATE','A RRP']],on='DATE')


mergeddf.to_csv("out.csv",index=False)

这就是我的 mergedf 的样子:

如您所见,代码仅合并标题而不合并数据。由于我的一个日期从2011 开始,而我的一个日期从2006 开始,我想合并它们以使它们相交,这样我只有在它们的日期交叉时才开始获取数据,我该如何实现这个?

谢谢

【问题讨论】:

  • 您是否验证了两个数据框中的日期是否相交?
  • 是的,他们都跑到 2019 年
  • 你也准时合并,你确定你的时间和日期都一样吗?
  • 是的,非常确定。
  • 是 DATE 对象/字符串类型吗?它们的格式不同,所以如果是,那可能就是问题所在。

标签: python pandas numpy merge


【解决方案1】:

DATE 列可能是对象类型,那么您不能加入不同格式的日期(例如 2006/01/01 与 2006-01-01)。您需要将这些更改为键入日期时间。

data1['DATE'] = pd.to_datetime(data1['DATE'])
data2['DATE'] = pd.to_datetime(data2['DATE'])

mergeddf = pd.merge(data1[['DATE','AA','AA2','AB']],
                                 data2[['DATE','A RRP']],on='DATE')

【讨论】:

    猜你喜欢
    • 2016-10-17
    • 2018-08-06
    • 1970-01-01
    • 2012-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多