如何比较不同频率的2个文件的时间戳

时间:2019-03-20 11:33:24

标签: python pandas datetime

我有两个包含时间戳和参数的文件。 file1的条目比file2多得多。每分钟对文件1的参数进行采样,而对文件2的参数进行不规则采样。每5分钟一次。我希望文件2中的每个现有条目都具有file1的等效条目。该怎么做?

`file1 = pd.read_csv('file1.csv', sep=',', header=1, parse_dates=True, na_values=['NAN'])

file2 = pd.read_csv('file2.csv', sep=',', header=1, parse_dates=True, na_values=['NAN'])

file1看起来像这样: enter image description here

file2看起来像这样: enter image description here

举个例子,我想有一个新行,其中包含file2中的条目:2019-02-15 00:01:02 file1中的等效值,例如取自参数BV_iDL_BOX,该参数是在同一分钟和同一日期获取的:2019-02-15 00:01

2 个答案:

答案 0 :(得分:1)

我不确定您的数据是什么样子以及预期的输出结果,因此希望这会有所帮助:

第1步:创建数据框

file1 = pd.date_range('2018-01-01', periods=5, freq='s')
file2 = pd.date_range('2018-01-01', periods=5, freq='5s')
file1 = pd.DataFrame(idx)
file1['column2'] = [1,2,3,4,5]
file2 = pd.DataFrame(id3)
file2['column3'] = [1,2,3,4,5]

第2步:加入数据框

file1.join(file2, how='outer')

答案 1 :(得分:0)

我假设您是在问'当我有5分钟的频率时,如何在文件2中获得1分钟的频率'。

相反,您可以做的是创建一个循环,该循环丢弃file1中的行,这样您实际上在file1中观察到的间隔为5分钟,从而使文件相等。会像这样(代码无法完全正常工作)

rows = 0
for index, row in df.iterrows():

    if(rows > 0):
        df.drop(df.index[[index])
        if(rows > 4):
            rows = 0
    rows = rows + 1

否则,您所指的实际上是对值进行插补,因此file2每次观察之间的间隔为1分钟。我看不到一种解决方案,不会导致与此相关的数据问题。

第三个选择是将频率为5分钟的数据集丢弃,并将file1切片为两个数据集。