Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基于时间戳将CSV列中的数据与空值组合_Python_Pandas_Csv - Fatal编程技术网

Python 基于时间戳将CSV列中的数据与空值组合

Python 基于时间戳将CSV列中的数据与空值组合,python,pandas,csv,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 预期产出为: Da

我有多个带有时间戳和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的情况下,它应该采用一个观测值的纬度和另一个观测值的经度,前提是两个时间戳在同一分钟内。时间戳应四舍五入到最接近的分钟


我怎样才能做到这一点呢?

如果您可以选择预处理文件,那么 1读取所有csv并将数据存储在列表中。基本上是需要迭代的东西。我想你也可以直接迭代文件。 2迭代列表,查看时间戳的前16个字符是否相同。 如果是,则将值存储在字典中。键将是时间戳,值将是纬度和经度。 3然后,您可以打印词典或使用词典进行进一步处理

我相信您可以优化和减少所需的总体操作。我只是建议一个解决问题的过程

另一种选择: 使用python并存储文件中的数据。 然后,您可以执行一个简单的sql语句,按时间戳对前16个字符进行分组,然后获得最大纬度和经度,这样您就可以将数据放在一行中。

如果您的行始终交替或至少成对排列,您可以按顺序号除以2对它们进行分组:

df_raw = df.reset_index()
df_raw.groupby(df_raw.index // 2).max().set_index('index') 
#                 Date_Time_UTC  Latitude_deg  Longitude_deg
#index                                                      
#14     2019-04-02 13:39:59.497     28.563535      77.085489

我发现@ashwin3086建议的按时间戳和最大值分组的解决方案效果最好

df_grouped = concatenated_df.groupby(['Date_Time_UTC'], as_index=False, sort=False).agg({'Latitude_deg': 'max', 'Longitude_deg' : 'max','FileName' : 'first' })

行总是交替吗?是的,我从数据中清除了所有不相关的行。。被否决。至少说出你为什么这么做。如果你在寻找代码,那么我理解。不是我,我实际上在我的解决方案中使用了你的建议成对的行有不同的日期时间。您不能按该列分组。在我的预期结果中,部分过程是清理2019-04-02 13:39:59.497到2019-04-02 13:39:59的日期时间