如何从数据框的两个值中查找并映射它们 - Python
How to look up from two values of data frame and map them - Python
我有两个 pandas 数据框,名称 df1
和 df2
。 df1
如下所示:
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]
行上添加 LatitudeX
和 LongitudeX
。(然后对 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.
我有两个 pandas 数据框,名称 df1
和 df2
。 df1
如下所示:
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]
行上添加 LatitudeX
和 LongitudeX
。(然后对 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.