【问题标题】:Converting unix time into datetime within csv在 csv 中将 unix 时间转换为日期时间
【发布时间】:2021-06-28 21:21:40
【问题描述】:

我有一个多行三列的 csv 文件。第一列是 unix 时间,第二列是价格,第三列代表以该特定价格交易的交易品种的交易量。我正在做的是,从 tha csv 文件中计算不同时间范围(例如 1h、4h、12h、1d)的 ohlc。通过首先将 unix 时间转换为日期时间,效果非常好

代码:

import pandas as pd
df = pd.read_csv('file.csv', names=['date', 'price', 'volume'])
df['date'] = pd.to_datetime(df['date'], unit='s')
df = df.set_index('date')
df = df['price'].resample('4h').ohlc()
df.to_csv('file_4h_ohlc.csv')

结果:

date,open,high,low,close
2017-05-01 20:00:00,0.757881,1.07,0.650011,1.069999

目标: 我现在想通过保留 ohlc 值将日期时间(2017-05-01 20:00:00)转换回同一文件中的 unix 时间(1493658000)。或者如果不可能,保存到不同的文件中。 非常感谢您的支持,如果已经回答了此类问题,我很抱歉,但我没有找到它

-热门

【问题讨论】:

    标签: python datetime unix time


    【解决方案1】:

    您可以创建一个新的日期列而不是覆盖现有的列,因此您可以将其重新用作索引。

    import pandas as pd
    
    df = pd.read_csv('file.csv', names=['date', 'price', 'volume'])
    df['datestamp'] = pd.to_datetime(df['date'], unit='s')
    df = df.set_index('datestamp')
    df = df['price'].resample('4h').ohlc()
    
    # Set the index back to the original (after calculating ohlc)
    df = df.set_index('date')
    
    # Optional: Drop the datestamp column
    df = df.drop(columns=['datestamp'])
    
    df.to_csv('file_4h_ohlc.csv')
    

    或者,您可以将现有的 datetime 列转换为 Unix 时间戳,如下所示:

    df['date'].apply(lambda x : (x - datetime.datetime(1970, 1, 1)).total_seconds())
    

    【讨论】:

    • 我认为你可以通过lambda x: x.timestamp()简化lambda函数?
    猜你喜欢
    • 1970-01-01
    • 2014-05-06
    • 2015-02-09
    • 1970-01-01
    • 2023-03-19
    • 2022-12-12
    • 2015-01-07
    • 2015-09-26
    • 2014-08-01
    相关资源
    最近更新 更多