对每个列分别执行查找,分别是Python Pandas

问题描述

对于一个数据框,我想对每一列进行查找并将结果放置在相邻列中。 id_df包含ID,如下所示:

            Col1           Col2  ...               Col160                 Col161
0          4328.0        4561.0  ...                NaN                   5828.0
1          3587.0        4328.0  ...                NaN                  20572.0
2          4454.0        1702.0  ...                NaN                    683.0

lookup_df还包含我感兴趣的ID和值。lookup_df如下所示:

    ID       Value
0   3587    3.0650
1   4454    2.9000
2   5       2.8450
3   8       2.8750
4   11      3.1000
5   13      3.1600
6   16      2.4450
7   18      3.0700
8   20      2.7950
9   23      3.0500
10   25      3.2250

我想获得以下数据框df3:

           Col1ID        Col1 Value   ...               Col161 ID             Col161 Value
0          4328.0        2.4450       ...                5828.0                   3.1600
1          3587.0        3.2250       ...                20572.0                  3.0650
2          4454.0        3.0500       ...                 683.0                   3.1600

因为我是一个excel用户,所以我想到了使用'merge'函数,但是我看不到如何用多列来做到这一点。

谢谢!

解决方法

使用map

m = lookup_df.set_index('ID')['Value']

result = pd.DataFrame()
for col in id_df.columns:
    result[col + '_ID'] = df[col]
    result[col + '_Value'] = df[col].map(m)