如何在使用熊猫导入csv文件的过程中有效删除重叠的行?

时间:2019-03-27 08:43:44

标签: python pandas import

我正在尝试使用基本上看起来像这样的熊猫导入csv文件:

文件1:

Date;Time;Value
2019-03-07;20:43;0.051
2019-03-07;20:44;0.048
...
2019-03-07;22:55;0.095
2019-03-07;22:56;0.098  

文件2:

Date;Time;Value
2019-03-07;22:55;0.095
2019-03-07;22:56;0.098    
...
2019-03-08;09:10;0.024
2019-03-08;09:11;0.022

当前,我正在像这样导入数据:

data = pd.concat([pd.read_csv(open(file),sep=';') for file in files])
data.index = pd.to_datetime(data['Date'] + ' ' + data['Time'])   

很明显,现在在导入的数据框中两次出现了测量数据的重叠部分,其绘制如下:

Line plot of overlapping data

由于我需要评估大量的csv文件,因此我想知道处理这种情况的最有效方法是什么。

我想到了这两个选项:

  1. 将文件导入循环中,并且每个文件仅使用file[i] > file[i-1]中的部分。
  2. 像现在一样导入文件,并在另一个步骤中删除重复项。

这些选项中哪个更有效,也许还有我现在未想到的更有效的选项?

1 个答案:

答案 0 :(得分:1)

对于删除重复项,熊猫对此有支持:

data = pd.concat([pd.read_csv(open(file),sep=';') for file in files])
data.index = pd.to_datetime(data['Date'] + ' ' + data['Time']
data = data[~data.index.duplicated()]

另请参阅文档:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Index.duplicated.html

关于“最佳”方法,这取决于数据量,其他限制等。在没有更多上下文的情况下是无法回答的,并且无论如何都可能基于观点。