【问题标题】:Merge csv Files with TimeStamps合并带有时间戳的 csv 文件
【发布时间】:2015-10-16 03:37:14
【问题描述】:

数据文件 1:

data_20150801.csv

Time                Header  Header  Header  Header 
2015-08-01 07:00    14.4    14.4    14.4    68                              
2015-08-01 07:01    14.4    14.4    14.4    68  

数据文件 2

data2_20150801.csv

Time                Header   Header
2015-08-01 00:00    90       12312
2015-08-01 00:01    232      13213
......
2015-08-01 07:00    1000    1500
2015-08-01 07:01    2312    1245
2015-08-01 07:02    1232    1232
2015-08-01 07:03    1231    1232

我想合并这 2 个 .csv 文件,以获得如下所示的文件:

Time                Header  Header  Header  Header Header   Header
2015-08-01 07:00    14.4    14.4    14.4    68     1000     1500

所以基本上我需要从 data2_ 复制行并将它们插入到 data_ 中的正确时间点 我用记事本++手动尝试了它,但问题是,有时在data2_中没有一分钟的条目,所以我需要检查丢失的TimeStep在哪里并手动跳过该点。

我在 Python 中做过一些事情,但我还是个菜鸟,所以我缺乏如何着手解决此类问题的经验?

我使用的是 mac,我发现 cat 命令将文件夹中的 .csv 文件组合到一个 cvs 文件 --> 有没有办法逐行执行此操作以保存时间戳?

【问题讨论】:

    标签: python macos csv


    【解决方案1】:

    不是 Python 专家,我会使用两个字典,使用日期时间戳作为键,使用其他列的列表作为数据。

    将一个文件加载到一个字典中,将另一个文件加载到另一个字典中。然后使用相同的键合并两个字典就很简单了。

    至于读取文件,有一个标准的cvs module可以使用。

    【讨论】:

      【解决方案2】:

      您可以使用 Python Pandas 很容易地做到这一点,但这可能是一种过度设计:

      import pandas as pd
      d_one = from_csv('data.csv',sep=',',engine='python',header=0)
      d_two = from_csv('data2.csv',sep=',',engine='python',header=0)
      d_three = pd.merge(d_one, d_two, left_on='timestamp',right_on='timestamp')
      d_three.to_csv('output.csv',sep=',')
      

      我还没有机会测试此代码,但它应该可以满足您的需求,您可能需要修改制表符的逗号(取决于文件)等。

      【讨论】:

      • 我收到from_csv 部分from_csvnot defined 的错误
      • 我调整了所有内容,现在输出如下所示:0 2015-08-01 07:00 14.4 14.4 14.4 68 2015-08-01 07:00 1000 1500 所以还有一个以0 开头的额外列,并且时间戳显示了两次。没关系,但有没有一个选项可以去掉第一列和第二个时间戳列
      • 合并我认为应该已经摆脱了它。但是,是的,应该有办法删除它。第一列为行号索引,供参考。
      【解决方案3】:

      考虑到建议使用 Pandas 的解决方案,我会在 to_csv 行添加“index=False”,将其转换为

      d_three.to_csv('output.csv',sep=',', index=False)
      

      这将删除索引列。

      【讨论】:

        猜你喜欢
        • 2019-02-01
        • 1970-01-01
        • 2013-12-16
        • 2016-02-11
        • 1970-01-01
        • 1970-01-01
        • 2019-01-17
        • 1970-01-01
        • 2014-11-30
        相关资源
        最近更新 更多