【发布时间】:2022-02-22 00:30:50
【问题描述】:
我有两个数据框:
import pandas as pd
df1 = pd.DataFrame(columns={'Date', 'latitude' , 'longitude' , 'tg'})
df1.head(5).to_dict() :
{'Date': {0: Timestamp('1984-01-01 00:00:00'), 1: Timestamp('1984-01-02
00:00:00'), 2: Timestamp('1984-01-03 00:00:00'), 3: Timestamp('1984-01-04 00:00:00'), 4: Timestamp('1984-01-05 00:00:00')}, 'longitude': {0: 13.875,
1: 13.875, 2: 13.875, 3: 13.875, 4: 13.875}, 'tg': {0: 5.339999675750732,
1: 2.559999942779541, 2: 4.019999980926514, 3: -0.07000000029802322, 4:
-2.259999990463257}, 'latitude': {0: 49.125, 1: 49.125, 2: 49.125, 3:
49.125, 4: 49.125}}
df2 = pd.DataFrame(columns={'Date', 'latitude_rr' , 'longitude_rr' , 'Runoff' , 'rr'})
df2.head(5).to_dict() :
{'Date': {0: Timestamp('1984-01-01 00:00:00'), 1: Timestamp('1984-01-02
00:00:00'), 2: Timestamp('1984-01-03 00:00:00'), 3: Timestamp('1984-01-04
00:00:00'), 4: Timestamp('1984-01-05 00:00:00')}, 'latitude_rr': {0: 49.125,
1: 49.125, 2: 49.125, 3: 49.125, 4: 49.125}, 'longitude_rr': {0: 13.875, 1:
13.875, 2: 13.875, 3: 13.875, 4: 13.875}, 'Runoff': {0: 0.3808451, 1:
0.3808451, 2: 0.6760563, 3: 1.464789, 4: 2.456338}, 'rr': {0: 0.0, 1: 0.0,
2: 2.799999952316284, 3: 2.200000047683716, 4: 0.4000000059604645}}
我试图在 df1.Date 等于 df2.Date 并且 df1.latitude 等于 df2.latitude 并且 df1.longitude 等于 df2.longitude 时获取 'tg' 值,然后将它们添加到 df2.
df1 和 df2 的大小不同。我试过了:
df3 = df1[df1.latitude.isin(df2.latitude_rr) & df1.longitude.isin(df2.longitude_rr) & df1.Date.isin(df2.Date)].tg
我试图将它添加到 df2 但由于 df2 大于 df1 ,它会导致错误的匹配。
我是 Pandas 的新手,因此非常感谢任何帮助。谢谢!
【问题讨论】:
-
如果它们的大小不同,您有什么唯一标识可以比较它们?是否有可以比较两个数据帧的
id字段? -
唯一的标识是日期、经度和纬度。
-
@ansev。没有在这里合并那么简单。