繁体   English   中英

使用 Pandas,如何将时间戳索引列添加到现有的 .csv 文件?

[英]With Pandas, how do I add a timestamp index column to an existing .csv file?

我当前的 .csv 文件如下所示:

         Account    Type    Value
index    
0        abc123     abc     123
1        cba123     bcd     234
2        abc321     cde     345

每隔几分钟就会将新条目附加到文件中,添加它们的时间是一个重要的数据位。 所以,我想将简单的有序索引列更改为时间戳列,基本上包含datetime.now()的结果。

换句话说,我希望它看起来像这样:

Timestamp                     Account    Type    Value
2020-09-08 08:36:38.188986    abc123     abc     123
2020-09-08 08:42:36.491590    cba123     bcd     234
2020-09-08 08:48:38.208422    abc321     cde     345

到目前为止,我最接近的是使用这个:

df.index = pd.DatetimeIndex(df.index)
df.index.name = "Timestamp"

问题是,虽然这确实根据需要添加了时间戳列,但添加的时间戳都是从 1970 年开始的,如下所示:

Timestamp                        Account    Type    Value
1970-01-01 00:00:00.000000000    abc123     abc     123
1970-01-01 00:00:00.000000001    cba123     bcd     234
1970-01-01 00:00:00.000000002    abc321     cde     345

如何创建一个索引列,其中包含该行实际附加到我的 .csv 文件时的时间戳,而不是 50 年前的时间戳?

更新:我认为使其行为异常的部分原因是我的数据源,这是一个转换为数据框的列表:

data = ib.accountSummary() # produces a list
df = pd.DataFrame(data) # converts list to dataframe

我想出了一些可行的方法(见下面我自己的自我回答),但我仍然对 1970 年的事情感到困惑。 为什么会发生这种情况? 有什么方法可以重写该片段以使其按预期工作吗?

像这样的东西?

from datetime import datetime
date = datetime.now()

df.append(pd.DataFrame(data, index=[date]))

自我回答:从不同的方向来看,我确实设法添加了一个包含时间戳的列,然后将其设置为索引:

now = datetime.now()
df["Timestamp"] = now
df.set_index("Timestamp", inplace=True)

不是我想要的那种优雅的单线解决方案,但我肯定会接受一个有效的 3 线解决方案!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM