如何从数据框的两个值中查找并映射它们 - Python

How to look up from two values of data frame and map them - Python

我有两个 pandas 数据框,名称 df1df2df1 如下所示:

df1=
tagx tagy datetime
302.  303. 2020-07-01 12:22:31
402.  811. 2020-07-01 12:20:33
.
.
.
.

df2如下:

df2=
Latitude. Longitude.  datetime                  tag
5.01.      52.0988.   2020-07-01 12:22:31       302
5.01.      52.0233.   2020-07-01 12:22:31       303
5.02.      52.0888.   2020-07-01 12:20:33       402
5.02.      52.0122.   2020-07-01 12:20:33       811
.
.
.

我想查看 df1 并在 df2 中找到 df1['tagx', 'datetime'] 的值作为 df2['tag', 'datetime'],然后如果我能找到,请使用纬度和df1 的经度并在 df1[tagx, datetime] 行上添加 LatitudeXLongitudeX。(然后对 tagY 重复相同的操作)

这就是我喜欢的:

df1=
tagx tagy datetime              LatitudeX  LongitudeX     LatitudeY LongitudeY        
302.  303. 2020-07-01 12:22:31.  5.01.      52.0988.      5.01.      52.0233.
402.  811. 2020-07-01 12:20:33.  5.02.      52.0888.      5.02.      52.0122.
.
.
.

请注意,在 df2 中,日期时间无法编制索引,因为它没有唯一值。

给你:

left = pd.merge(df1, df2, left_on=['tagx', 'datetime'], right_on=['tag', 'datetime'])\
    .rename(columns={'Latitude.': 'LatitudeX', 'Longitude.': 'LongitudeX'})\
    .drop(columns='tag')

right = pd.merge(df1, df2, left_on=['tagy', 'datetime'], right_on=['tag', 'datetime'])\
    .rename(columns={'Latitude.': 'LatitudeY', 'Longitude.': 'LongitudeY'})\
    .drop(columns='tag')

print(pd.merge(left, right, on=['tagx', 'tagy', 'datetime']))

输出

    tagx   tagy             datetime LatitudeX LongitudeX LatitudeY LongitudeY
0  302.0  303.0  2020-07-01 12:22:31     5.01.   52.0988.     5.01.   52.0233.
1  402.0  811.0  2020-07-01 12:20:33     5.02.   52.0888.     5.02.   52.0122.