我有两个包含时间戳和参数的文件。 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
答案 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切片为两个数据集。