代码之家  ›  专栏  ›  技术社区  ›  t3chb0t

数据帧源csv在操作df时被覆盖

  •  0
  • t3chb0t  · 技术社区  · 6 年前

    我在玩 DataFrames *.csv

    df = pd.DataFrame.from_csv(report_csv_path)
    
    ,duration,end,start
    0,19800000,2019-03-28T17:00:00+02:00,2019-03-28T11:30:00+02:00
    1,12600000,2019-03-28T10:00:00+02:00,2019-03-28T06:30:00+02:00
    2,3600000,2019-03-27T21:00:00+02:00,2019-03-27T20:00:00+02:00
    

    然后我做一些不起作用的事情,比如试图解析和设置值等等,下一次我想做其他事情时,数据就不见了 csv 只包含一个我刚刚试图修改的列,例如(这失败了,因为我还没有弄清楚,但如果它不修改源代码,那就太好了)

    parse_timestamp = lambda x: datetime.strptime(x, "%Y-%m-%dT%H:%M:%S%z")
    
    for (i, row) in df.iterrows():
        df.at[i, "start"] = parse_timestamp(row["start"])
    

    df 是否仍连接到该文件?如果是,我如何才能断开此连接,使其不破坏我的文件?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Quang Hoang    6 年前

    不是一个完整的答案,但太长了,无法评论。

    不, read_csv 完成后关闭文件处理程序,因此没有连接。

    iterrows ,这非常慢,要转换日期时间,可以执行以下操作:

    df['start'] = pd.to_datetime(df['start'])
    

    熊猫将检测(大多数)常见的日期时间格式。你甚至可以将这个过程集成到 :

    df = pd.read_csv(report_csv_path, parse_dates=['start'])