【问题标题】:How to upsample a panda data frame如何重新采样熊猫数据框
【发布时间】:2018-01-02 23:45:24
【问题描述】:

我有一个逗号分隔的数据文件如下:

ID | StartTimeStamp | EndTimeStamp | Duration (in seconds) | AssetName
1233 | 2017-01-01 00:00:02 | 2017-01-01 00:10:01 | 601 | Car1
1233 | 2017-01-01 00:10:01 | 2017-01-01 00:10:12 | 11 | Car1
...
1235 | 2017-01-01 00:00:02 | 2017-01-01 00:10:01 | 601 | CarN

等等

现在我想使用 starttime 和 duration 创建以下内容来对数据进行上采样。

ID | StartTimeStamp |  AssetName
1233 | 2017-01-01 00:00:02 | Car1
1233 | 2017-01-01 00:00:03 | Car1
1233 | 2017-01-01 00:00:04 | Car1
...
1233 | 017-01-01 00:10:01 | Car1
...
1235 | 2017-01-01 00:00:02 | CarN
1235 | 2017-01-01 00:00:03 | CarN
1235 | 2017-01-01 00:00:04 | CarN
... (i.e. 601 rows of data one per second)
1235 | 2017-01-01 00:10:01 | CarN

但是我增加了如何做到这一点的可能性,因为上采样似乎只能用于时间序列?我正在考虑使用 StartTimeStamp 和文件中的秒数来使用 for 循环,但不知道如何去做?

【问题讨论】:

    标签: python dataframe sampling do-loops


    【解决方案1】:

    您可以为每个ID 组重新采样,然后填充字符列中的空白

    import pandas as pd
    
    df_resampled = df.set_index(pd.to_datetime(df.StartTimeStamp)).groupby('ID')
    
    # Expand out the dataframe for one second
    df_resampled = df_resampled.resample('1S').asfreq()
    
    # Interpolate AssetName for each group
    df_resampled['AssetName'] = df_resampled['AssetName'].ffill().bfill()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-10
      • 2018-03-26
      • 2020-11-18
      • 2017-03-19
      • 2016-03-19
      • 2018-07-05
      • 2021-06-01
      • 2022-01-12
      相关资源
      最近更新 更多