将不规则采样的单列拆分为熊猫中具有相同时间戳的多列

问题描述 投票:0回答:1

我有一个无法更改的系统导出,我需要修改数据进行分析。我的数据框具有以下格式:

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秒,并且对这些值进行插值。我刚接触熊猫,所以对您的帮助将不胜感激

python pandas transformation resampling
1个回答
0
投票

用途:

#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]
© www.soinside.com 2019 - 2024. All rights reserved.