【发布时间】:2022-01-01 21:11:35
【问题描述】:
我有以下两个数据集:
df_ff.head()
Out[382]:
Date Mkt-RF SMB HML RF
0 192607 2.96 -2.38 -2.73 0.22
1 192608 2.64 -1.47 4.14 0.25
2 192609 0.36 -1.39 0.12 0.23
3 192610 -3.24 -0.13 0.65 0.32
4 192611 2.53 -0.16 -0.38 0.31
df_ibm.head()
Out[384]:
Date Open High ... Close Adj_Close Volume
0 2012-01-01 178.518158 184.608032 ... 184.130020 128.620193 115075689
1 2012-02-01 184.713196 190.468445 ... 188.078400 131.378296 82435156
2 2012-03-01 188.556412 199.923523 ... 199.474182 139.881134 92149356
3 2012-04-01 199.770554 201.424469 ... 197.973236 138.828659 90586736
4 2012-05-01 198.068832 199.741867 ... 184.416824 129.322250 89961544
关于日期变量的类型,我们有以下几点:
df_ff.dtypes
Out[383]:
Date int64
df_ibm.dtypes
Out[385]:
Date datetime64[ns]
我想合并(用 SQL 语言:“内连接”)这两个数据集,因此正在编写:
testMerge = pd.merge(df_ibm, df_ff, on = 'Date')
这会产生错误:
ValueError: You are trying to merge on datetime64[ns] and int64 columns. If you wish to proceed you should use pd.concat
由于日期变量的格式不同,此合并不起作用。关于如何解决这个问题的任何提示?我的第一个想法是翻译格式的日期(在 df_ff 数据集中): “192607”转换为“1926-07-01”格式,但我没能做到。
【问题讨论】:
-
int64日期的格式是什么? (即YYYY-MM-DD符号中的192607是什么)? -
192608是什么意思? 2019-08-26? -
隐式假设是第一天,所以192607应该是:1926-07-01 @BrokenBenchmark。
-
1926-07-02将如何用这种表示法表示? -
不会,我们只有月度数据,所以我们总是假设它是每个月的第一天。 @BrokenBenchmark