两个DataFrame的索引匹配问题
两个DataFrame的索引匹配问题
看起来你有两个需要关联的DataFrame,我先把你给出的表格整理清晰:
第一个DataFrame(我们暂且称它为df1):
| X | Y |
|---|---|
| 0 | 1 |
| 0 | 125 |
| 1 | 65 |
| 1 | 59 |
| 2 | 28 |
| ... | ... |
第二个DataFrame(我们称它为df2,核心逻辑是它的index对应df1的X列,包含经纬度信息):
| index | lat | lon |
|---|---|---|
| 0 | 90.0 | 0.0 |
| 1 | 90.0 | 12.5 |
| 2 | 90.0 | 25.0 |
| ... | ... | ... |
解决方案:匹配经纬度到第一个DataFrame
这里有两种简单直接的方法,用Pandas就能轻松实现:
方法1:使用merge做左连接(最稳妥的关联方式)
你可以直接基于df1的X列和df2的索引做左连接,这样能完整保留df1的所有行,同时把对应X值的经纬度匹配过来:
import pandas as pd # 假设df1和df2已经是你创建好的DataFrame merged_df = pd.merge(df1, df2, left_on='X', right_index=True, how='left')
如果更习惯用列名匹配,也可以先把df2的索引转成列再合并:
df2_with_index_col = df2.reset_index().rename(columns={'index': 'X'}) merged_df = pd.merge(df1, df2_with_index_col, on='X', how='left')
方法2:使用map快速映射(适合仅添加单列/少量列的场景)
如果只是需要给df1新增经纬度列,直接用map通过X值映射df2的对应值即可:
df1['lat'] = df1['X'].map(df2['lat']) df1['lon'] = df1['X'].map(df2['lon'])
两种方法最终都会得到包含X、Y、lat、lon的完整DataFrame,每个X对应的经纬度会自动匹配到所有对应行~
备注:内容来源于stack exchange,提问作者Ruby
相关产品推荐
相关产品推荐

