python - 如何使用多列合并两个数据框?

标签 python pandas

我有两个数据框:

df_1 = pd.DataFrame(columns=["pointid","lat","lon"],data=[[1,41.792145,3.046884],[2,41.799834,3.051082],[3,41.813694,3.063463], [4,41.817673,3.067025]])

df_2 = pd.DataFrame(columns=["id","point_from","point_to"],
                              data=[[1,1,2],[2,1,3],[3,2,3]])

我想合并它们以获得一个新的数据框 df_3 与以下列(1 行的示例):

id    point_from    point_to   lat_from   lon_from   lat_to     lon_to
1     1             2          41.792145  3.046884   41.799834  3.051082

我该怎么做?

最佳答案

一种选择是分别在 point_frompoint_to 列上将 df_1df_2 合并两次:

df_1 = df_1.set_index("pointid")

(df_2.merge(df_1.add_suffix("_from"), left_on="point_from", right_index=True)
     .merge(df_1.add_suffix("_to"), left_on="point_to", right_index=True))

#   id  point_from  point_to   lat_from  lon_from     lat_to    lon_to
#0   1           1         2  41.792145  3.046884  41.799834  3.051082
#1   2           1         3  41.792145  3.046884  41.813694  3.063463
#2   3           2         3  41.799834  3.051082  41.813694  3.063463

关于python - 如何使用多列合并两个数据框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45152062/

相关文章:

python - 计算 pandas 系列中月均值的累积偏差

python - 我怎样才能看到 Pandas 的几个最大值?

sql-server-2005 - 在 Pandas 中传递查询参数

python - postgres 查询中的文字括号,pgadmin 与 psycopg2

在MATLAB中运行的Python程序无法导入pygame

python - 在 python 中,每次调用 subprocess.call 都会产生一个单独的子进程吗?

javascript - 有趣的问题;本地存储和 MongoDB

python - 将时间戳合并到自定义时间段中

pandas - 移动 MultiIndex 时间序列的最有效方法

Python pandas 每月重新采样每周工作不会