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

2024-06-16 11:40:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我当前的.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"

问题在于,尽管这确实会根据需要添加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年的事情感到困惑。究竟为什么会这样?我有没有办法重写这个片段,让它按预期的方式工作


Tags: 文件csvdfindexvaluetype时间account
2条回答

像这样的

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线解决方案

相关问题 更多 >