【问题标题】:Python -Pandas Downsampling with first returns NaNPython -Pandas 下采样首先返回 NaN
【发布时间】:2015-11-28 15:45:40
【问题描述】:

我正在尝试使用 pandas 使用 how='first' 将船只跟踪数据从几秒钟重新采样到几分钟。数据帧称为 hg1s。唯一 ID 称为 MMSI。日期时间索引是 TX_DTTM。这是一个数据样本:

            TX_DTTM       MMSI        LAT        LON         NS
2013-10-01 00:00:02  367542760  29.660550 -94.974195         15   
2013-10-01 00:00:04  367542760  29.660550 -94.974195         15   
2013-10-01 00:00:07  367451120  29.614161 -94.954459          0   
2013-10-01 00:00:15  367542760  29.660210 -94.974069         15   
2013-10-01 00:00:13  367542760  29.660210 -94.974069         15   

要重新采样的代码:

hg1s1min = hg1s.groupby('MMSI').resample('1Min', how='first')

以及输出的数据样本:

 hg1s1min[20000:20004]
             MMSI             TX_DTTM                  NS      LAT  LON
        367448060 2013-10-21 00:42:00                 NaN      NaN  NaN        
                  2013-10-21 00:43:00                 NaN      NaN  NaN        
                  2013-10-21 00:44:00                 NaN      NaN  NaN      
                  2013-10-21 00:45:00                 NaN      NaN  NaN   

假设每分钟内有几个数据点是安全的,所以我不明白为什么这没有为该方法获取第一条记录。我查看了此链接:Pandas Downsampling Issue,因为它似乎与我的问题相似。我尝试传递 label='left' 和 label='right',都没有成功。

如何返回每个 MMSI 每分钟的第一条记录?

【问题讨论】:

  • 我似乎无法在所提供的小数据样本上复制该问题。您能否发布一个演示NaNs 的最小示例?

标签: python pandas downsampling


【解决方案1】:

事实证明,问题不在于方法,而在于我对数据的假设。大型数据集为一个月,即 44640 分钟。虽然我的数据集中的每条记录都有相关的值,但时间上并没有 100% 的重叠。在这种情况下,MMSI = 367448060 出现在 2013-10-17 23:24:31 和 2013-10-29 20:57:32。在这两个数据点之间,没有要采样的数据,导致 NaN,这是正确的。

【讨论】:

    猜你喜欢
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-26
    • 2013-03-27
    • 2019-02-25
    • 1970-01-01
    • 2021-10-04
    相关资源
    最近更新 更多