我有多个带有时间戳和lat long数据的CSV文件,并且lat和long在不同的行中。
Date_Time_UTC Latitude_deg Longitude_deg
7 2019-04-02 13:39:59.398 28.563535 NaN
14 2019-04-02 13:39:59.497 NaN 77.085489
预期输出为:
Date_Time_UTC Latitude_deg Longitude_deg
7 2019-04-02 13:39 28.563535 77.085489
因此,对于NaN,如果两个时间戳记在同一分钟内,则应采用一个观测值的纬度和另一观测值的经度。时间戳记应四舍五入到最接近的分钟。
我该怎么做?
答案 0 :(得分:0)
如果您的行始终交替出现或至少成对出现,则可以按顺序编号除以2进行分组:
else
答案 1 :(得分:0)
我发现@ ashwin3086建议的关于按时间戳和最大值分组的解决方案是最有效的
df_grouped = concatenated_df.groupby(['Date_Time_UTC'], as_index=False, sort=False).agg({'Latitude_deg': 'max', 'Longitude_deg' : 'max','FileName' : 'first' })
答案 2 :(得分:-1)
如果您可以选择预处理文件,则 1)读取所有csv,并将数据存储在list中。基本上是要迭代的东西。我猜你也可以直接遍历文件。 2)遍历列表,查看时间戳的前16个字符是否相同。 如果是,则将值存储在字典中。关键将是时间戳记,值将是纬度和经度。 3)然后可以打印字典或将其用于进一步处理。
我确信您可以优化和减少所需的总体操作。我只是在建议解决问题的过程。
另一个选择: 使用python pandas并存储文件中的数据。 然后,您可以执行一个简单的sql,以按时间戳(前16个字符)进行分组,然后获取纬度和经度的最大值,以便将数据放在一行中。