gpt4 book ai didi

python - Pandas:在日期时间 datetime64[ns] 上连接两个表失败

转载 作者:行者123 更新时间:2023-12-01 07:55:59 25 4
gpt4 key购买 nike

有谁知道为什么在 datetime64[ns] 上加入不起作用,而如果将这些相同的列设置为索引则它确实起作用?这真的很奇怪,感觉像是一个错误,或者有什么解释吗?

df1 = pd.DataFrame({
"a": [1,2,3],
"t": pd.to_datetime([1556979766, 1556979767, 1556979768], unit="s")
})
df2 = pd.DataFrame({
"b": [5,3,3],
"t": pd.to_datetime([1556979766, 1556979767, 1556979768], unit="s")
})
df1.join(df2, on="t")

>> ValueError: You are trying to merge on datetime64[ns] and int64 columns. If you wish to proceed you should use pd.concat

虽然这有效:

df1.index = df1.t
df2.index = df2.t
df1.join(df2, lsuffix="1")

dtypes 相同

list(df1.dtypes) == list(df2.dtypes)
>> True

( Pandas 版本:'0.24.2')

最佳答案

正如 @perl 所建议的,df1.join(df2, on='t')将尝试匹配df1.tdf2.index ,在本例中int64 。解决这个问题的另一种方法是

df1.join(df2.set_index('t'), on='t')

或者使用merge 。您可以在其中指定两侧使用哪些列。

df1.merge(df2, left_on='t', right_on='t')

关于python - Pandas:在日期时间 datetime64[ns] 上连接两个表失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55983552/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com