【发布时间】:2021-10-06 17:35:48
【问题描述】:
原始时间戳 dtype int64
ts = datetime.fromtimestamp(1627741304932/1000)
print(ts)
2021-07-31 17:21:44.932000
合并数据帧后,时间戳丢失/增加 +-5 分钟,dtype 变为 float64
ts = datetime.fromtimestamp(1.627741e+12/1000)
print(ts)
2021-07-31 17:16:40
有没有办法避免这种转换或至少是精度损失?
除了丢弃一万亿以上并在合并后返回?
更新
我已经为我的问题创建了一个确切的示例:
示例
df1 = pd.DataFrame({'col1': ['ts1', 'ts2', 'ts3', 'ts4'],
'col2': [1627741304932, 1627741304931, 1627741304930, 1627741304929]})
df2 = pd.DataFrame({'col1': ['ts1', 'ts2', 'ts3', 'ts5'],
'col2': [1627741305932, 1627741304931, 1627741304930, 1627741304920]})
x = df1.merge(df2, on='col1', how='outer', suffixes=('_prev', '_new'))
print(x)
print(x.dtypes)
输出
这是因为在合并期间添加到数据框的 NaN 值
col1 col2_prev col2_new
0 ts1 1.627741e+12 1.627741e+12
1 ts2 1.627741e+12 1.627741e+12
2 ts3 1.627741e+12 1.627741e+12
3 ts4 1.627741e+12 NaN
4 ts5 NaN 1.627741e+12
col1 object
col2_prev float64
col2_new float64
dtype: object
我该如何解决这个问题?
【问题讨论】:
-
只要确保两个数据框使用相同的类型即可。
-
@Mohammad 他们是,但是在他们有一些 NaN 之后,这可能是原因吗?
-
如果两列都是整数,那么结果也应该是整数。您能否提供一个工作示例,以便我们更好地检查。
-
@Mohammad Iv'e 提供了一个例子,我发现问题确实是由 NaN 引起的
标签: python-3.x pandas dataframe merge timestamp