我想为每个ID找到00:00:00之前的最早测量时间和00:00:00之后的最晚测量时间。这样我就可以选择最大重叠开始和结束时间。下面是示例数据:
import pandas as pd
import random
# Create a sample dataframe
df = pd.DataFrame({'timestamp': pd.date_range(start='2022-01-01', end='2022-01-01 23:59', freq='4H')})
df2 = pd.DataFrame({'timestamp': pd.date_range(start='2022-01-01', end='2022-01-01 23:59', freq='5H')})
df['value']= [random.randrange(10, 19) for n in range(len(df))]
df['ID']= [random.randrange(1, 4) for n in range(len(df))]
df2['value']= [random.randrange(10, 19) for n in range(len(df2))]
df2['ID']= [random.randrange(1, 4) for n in range(len(df2))]
merged_df = df.merge(df2, how='outer', on =['timestamp'])
# Pivot the dataframe to create a new dataframe with all time measurements for each ID
#merged_df = pd.pivot_table(df, values='value', index=['ID', 'timestamp'], aggfunc='sum')
# Reset the index to create a regular dataframe
merged_df.reset_index(drop=True,inplace=True)
# sort by time
merged_df.sort_values(by=['timestamp'],inplace=True)
# Print the result
print(merged_df)
我有两个不同的时间序列,它们的测量是每20分钟进行一次,另一个是每15分钟进行一次。
我的期望是在合并的 Dataframe 中保留VALUE_1列的原始测量值。此外,我想为没有VALUE_1条目的记录时间插入值。由于df 1每20分钟有一次测量,而df 2每15分钟有一次测量。df 1没有TIME 00:15:00、00:30:00或00:45:00等的VALUE_1列的任何值。df 2每15分钟测量一次,因此它没有00:20:00、00:40:00等的VALUE_1值。如何在保留原始测量值的同时填充和插入这些时间点?
**最小示例:**假设我有这样一个具有不同时间间隔的 Dataframe 。
| 识别号|数值1|时间|
| - ------|- ------|- ------|
| 二十五|五十|00时04分|
| 二十五|八十|00时04分30秒|
| 二十五|一百|00时05分|
| 二十五|一百|00时05分30秒|
| 二十五|一百|00时06分|
| 十八|四十五|00时04分02秒|
| 十八|三十三|00时04分22秒|
| 十八|七十五|00时04分42秒|
| 十八|五十七|00时05分02秒|
| 十八|九十九|00时05分22秒|
预期产出:
| 识别号|数值1|时间|
| - ------|- ------|- ------|
| 二十五|五十|00时04分|
| 二十五|插值值=可能(50+80)/2|00时04分02秒|
| 二十五|插值值|00时04分22秒|
| 二十五|八十|00时04分30秒|
| 二十五|插值值|00时04分42秒|
| 二十五|一百|00时05分|
| 二十五|插值值|00时05分02秒|
| 二十五|插值值|00时05分22秒|
| 二十五|一百|00时05分30秒|
| 二十五|一百|00时06分|
| 十八|插值值=45可能重复最近值|00时04分|
| 十八|四十五|00时04分02秒|
| 十八|三十三|00时04分22秒|
| 十八|一些插值|00时04分30秒|
| 十八|七十五|00时04分42秒|
| 十八|一些插值|00时04分30秒|
| 十八|五十七|00时05分02秒|
| 十八|九十九|00时05分22秒|
| 十八|一些插值|00时05分|
| 十八|一些插值|00时05分30秒|
| 十八|一些插值|00时06分|
**EDIT 1:**如果我只有两个独立的时间序列,我可以在DATE_TIME或TIME合并它们(使用外部合并),这样我就可以保留原始时间记录和来自其他时间序列的记录。然后,我可以只插入它。现在,我试图找出如何对多个时间序列进行插入。
1条答案
按热度按时间vq8itlhq1#
根据我的评论,很难猜测预期的输出会是什么。但这里有一些关于如何将两个DataFrame放在一个公共DateTime索引上,以及如何插入数字列的指针:
现在
a
和b
都有相同的(不规则的)时间索引,它们保留了它们的初始测量值,缺失的值已通过线性插值填充,例如,对于a
: