Pandas 从网格中替换数组中的值(纬度、经度、值)

问题描述 投票:0回答:1

我一直坚持从数百个数据集的给定纬度、经度和雨值中替换(校正)数组的值。这是我正在处理的数据集的一部分:

Lat   Lon     Rain
6.125 100.375 197.3
3.870 102.375 163.2
1.625 102.875 215.8
5.375 100.400 188.5
3.125 113.125 272.8
5.375 100.375 204.5

这是我坚持的脚本:

df1 = pd.DataFrame({
    'Lat':Lat,
    'Lon':Lon,
    'Rain':Rain})
df1 = df1.set_index(['Lat','Lon'])

df2 = pd.DataFrame({
    'Lat':[3.870, 5.375],
    'Lon':[102.375, 100.375],
    'Rain':[50, 60]})

df2 = df2.set_index(['Lat','Lon'])

output=df1.combine_first(df2).reset_index()

print(output) 

     Lat      Lon   Rain
0  1.625  102.875  215.8
1  3.125  113.125  272.8
2  3.870  102.375  163.2
3  5.375  100.400  188.5
4  5.375  100.375  204.5
5  6.125  100.375  197.3

输出仍然保持不变,虽然它应该是这样的

   Lat      Lon   Rain
0  1.625  102.875  215.8
1  3.125  113.125  272.8
2  3.870  102.375  50.0 --here
3  5.375  100.400  188.5
4  5.375  100.375  60.0 --here
5  6.125  100.375  197.3

最后一个问题如何像默认数据一样排序?

提前一百万致谢。

pandas replace
1个回答
0
投票

一个可能的解决方案:

(df1.merge(df2, on=['Lat', 'Lon'], how='left', suffixes=('_x', ''))
 .fillna({'Rain': df1['Rain']}).drop('Rain_x', axis=1))
© www.soinside.com 2019 - 2024. All rights reserved.