我有一个无法更改的系统导出,我需要修改数据进行分析。我的数据框具有以下格式:
Timestamp | Name | Value
===========================
'14:00:00' | Var A | 0
'14:00:01' | Var A | 1
'14:00:02' | Var A | 2
...
'15:00:00' | Var A | 3600
'14:00:00' | Var B | 0
'14:10:00' | Var B | 600
..
'15:00:00' | Var B | 3600
'14:00:00' | Var C | 1000
...
因此,基本上是多个变量的对数的并集,每个变量具有不同的采样频率。我需要的是具有单个采样频率(例如1秒),并且每个变量都位于独立的列中。所以我需要实现的是:
Timestamp |Var A | Var B| Var C|.....
'14:00:01' | 0 | 0 | 1000 | ...
'14:00:02' | 1 | 1 | ... |
'14:00:03' | 2 | 2 | |
... | ... | ... | |
'15:00:00' | 3600 | 3600 | |
请注意,B最初的读取时间为10分钟,但现在为1秒,并且对这些值进行插值。我刚接触熊猫,所以对您的帮助将不胜感激
用途:
#if neccessary
#df['Timestamp']= df['Timestamp'].apply(eval)
new_df = (df.assign(Timestamp = pd.to_datetime(df['Timestamp'].astype(str)))
.pivot(*df)
.asfreq('s')
.reset_index()
.assign(Timestamp = lambda x: x['Timestamp'].dt.time)
.interpolate()
.rename_axis(columns = None)
)
print(new_df)
Timestamp Var A Var B Var C
0 14:00:00 0.0 0.0 1000.0
1 14:00:01 1.0 1.0 1000.0
2 14:00:02 2.0 2.0 1000.0
3 14:00:03 3.0 3.0 1000.0
4 14:00:04 4.0 4.0 1000.0
... ... ... ... ...
3596 14:59:56 3596.0 3596.0 1000.0
3597 14:59:57 3597.0 3597.0 1000.0
3598 14:59:58 3598.0 3598.0 1000.0
3599 14:59:59 3599.0 3599.0 1000.0
3600 15:00:00 3600.0 3600.0 1000.0
[3601 rows x 4 columns]