Python Pandas : Overwriting an Index with a list of datetime objects

标签 python datetime indexing pandas

我有一个输入 CSV,标题中带有时间戳,如下所示(形成列的时间戳数量为数千):

header1;header2;header3;header4;header5;2013-12-30CET00:00:00;2013-12-30CET00:01:00;...;2014-00-01CET00:00:00

在 Pandas 0.12 中,我能够做到这一点,将字符串时间戳转换为日期时间对象。以下代码删除时间戳字符串中的“CEST”(translate()),将其读入为日期时间 (strptime()),然后将其本地化为正确的时区 (localize()) [这种方法的原因是因为,至少在我拥有的版本中,CEST 未被识别为时区]。

DF = pd.read_csv('some_csv.csv',sep=';')
transtable = string.maketrans(string.uppercase,' '*len(string.uppercase))
tz = pytz.country_timezones('nl')[0]
timestamps = DF.columns[5:]
timestamps = map(lambda x:x.translate(transtable), timestamps)
timestamps = map(lambda x:datetime.datetime.strptime(x, '%Y-%m-%d %H:%M:%S'), timestamps)
timestamps = map(lambda x: pytz.timezone(tz).localize(x), timestamps)
DF.columns[5:] = timestamps

但是,我的下游代码要求我运行 pandas 0.16 在 0.16 上运行时,我在上述代码段的最后一行中收到此错误:

*** TypeError: Indexes does not support mutable operations

我正在寻找一种用日期时间对象覆盖索引的方法。使用方法 to_datetime() 对我来说不起作用,返回:

*** ValueError: Unknown string format

我有一些后续代码,复制然后删除此数据帧中的前几列数据(所有“header1; header2, header3”仅留下时间戳。目的是然后转置并按时间戳索引.

所以,我的问题:

或者: 如何用日期时间覆盖一系列列名,以便我可以传入一组预先安排的时间戳,pandas 将能够在后续代码中将其识别为时间戳(在 pandas v0.16 中) 或者: 任何其他可以达到相同效果的建议。

我探索了 set_index()replace()to_datetime()reindex()可能还有其他一些人,但似乎无法实现这种覆盖。希望这很容易做到,我只是错过了一些东西。

TIA

最佳答案

我最终通过以下方法解决了这个问题:

问题是我有几千个带有时间戳的列标题,我无法直接解析为日期时间对象。

因此,为了合并这些时间戳对象,我添加了一个名为“Time”的新列,然后将日期时间对象包含在其中,然后将索引设置为新列(我省略了清除其他标题数据行,通过 drop() 方法:

    DF = DF.transpose()  
    DF['Time'] = timestamps 
    DF = DF.set_index('Time') 

摘要:如果您的 CSV header 中包含一组无法解析的时间戳;解决这个问题的方法是单独解析它们,将它们包含在具有正确日期时间对象的新 Time 列中,然后基于新列进行 set_index()

关于Python Pandas : Overwriting an Index with a list of datetime objects,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29835477/

相关文章:

python - 为什么导入模块会导致循环导入错误

python - 对文本进行标记和标签

python - 同时对索引和列重新建立索引

sql - 如何确保postgresql表中只有一列不为空

python - Tello 无人机在遵循方形路径后未降落在停机坪上

python - 使用gunicorn运行app报错

c# - 特定格式 C# 的日期时间值解析

readr::read_csv() 不读取日期并返回 NA

javascript新日期创建错误

mysql - MySQL中INDEX、PRIMARY、UNIQUE、FULLTEXT之间的区别?