根据时间戳将CSV列中的数据与空值合并

时间:2019-04-04 04:34:09

标签: python pandas csv

我有多个带有时间戳和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,如果两个时间戳记在同一分钟内,则应采用一个观测值的纬度和另一观测值的经度。时间戳记应四舍五入到最接近的分钟。

我该怎么做?

3 个答案:

答案 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个字符)进行分组,然后获取纬度和经度的最大值,以便将数据放在一行中。