使用Lat-Lon和时间序列Pandas进行操作

时间:2015-06-26 19:44:22

标签: python pandas latitude-longitude calculated-columns

我正在尝试使用纬度和经度进行一些文件合并。

Input File1.csv

Name,Lat,Lon,timeseries(n)
London,80.5234,121.0452,523
London,80.5234,121.0452,732
London,80.5234,121.0452,848
Paris,90.4414,130.0252,464
Paris,90.4414,130.0252,829
Paris,90.4414,130.0252,98
New York,110.5324,90.0023,572
New York,110.5324,90.0023,689
New York,110.5324,90.0023,794


File2.csv
Name,lat,lon,timeseries1
London,80.5234,121.0452,500
Paris,90.4414,130.0252,400
New York,110.5324,90.0023,700

现在预期输出

File2.csv

Name,lat,lon,timeseries1,timeseries(n) #timeseries is 24 hrs format 17:45:00
London,80.5234,121.0452,500,2103 #Addition of all three values 
Paris,90.4414,130.0252,400,1391
New York,110.5324,90.0023,700,2055

使用python, numpy and dictionaries,它会像key = sum of values一样直,但我想使用Pandas

请建议我如何开始,或者可能是我的一些例子。我没有看到像带有LatitudeLongitude的Pandas的字典类型。

1 个答案:

答案 0 :(得分:1)

在第一个df上执行groupby聚合,然后使用其他df调用sum然后merge

In [12]:
gp = df.groupby('Name')['timeseries(n)'].sum().reset_index()
df1.merge(gp, on='Name')

Out[14]:
       Name       Lat       Lon  timeseries1  timeseries(n)
0    London   80.5234  121.0452          500           2103
1     Paris   90.4414  130.0252          400           1391
2  New York  110.5324   90.0023          700           2055

聚合看起来像这样:

In [15]:    
gp

Out[15]:
       Name  timeseries(n)
0    London           2103
1  New York           2055
2     Paris           1391

您的csv文件可以使用read_csv加载,例如:

df = pd.read_csv('File1.csv')
df1 = pd.read_csv('File2.csv')