如何从Pandas DataFrame中提取纯Epoch时间值而非带描述的结果
解决方法:提取Series中的标量值
你当前代码里df.time[df.time == df_high_tf.time.iloc[i]]返回的是Pandas Series对象(哪怕只有一个元素),所以会附带索引、列名和类型信息。要拿到纯Epoch数字,只需要从这个Series里提取标量值,有几种简单方法:
方法1:用.iloc[0]直接取第一个元素
因为你已经确认该时间存在于df中,筛选结果只会有一个元素,直接取索引0的元素即可:
df_time = df.time[df.time == df_high_tf.time.iloc[i]].iloc[0]
方法2:用.values[0]提取numpy数组元素
也可以先把Series转成numpy数组,再取第一个元素:
df_time = df.time[df.time == df_high_tf.time.iloc[i]].values[0]
更高效的替代方案:避免循环
你的循环写法效率较低,尤其是数据量大的时候。可以直接用isin一次性找出所有匹配的时间值:
# 获取所有同时存在于两个DataFrame的time值(列表形式) matching_times = df[df['time'].isin(df_high_tf['time'])]['time'].tolist() # 如果只需要第一个匹配值 df_time = matching_times[0]
这样处理后,df_time就会是纯数字格式的Epoch时间,比如1678233600000。
内容的提问来源于stack exchange,提问作者foolhardy
相关产品推荐
相关产品推荐

