[英]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.