首页 > 解决方案 > 使用另一个数据框作为列引用的数据框查找

问题描述

我有 3 列 (L,M,N) 和 n 行的 DF A:

L  M  N
1  2  3
4  5  6
7  8  9

DF B 有 2 列(X 和 Y)和 n 行:

 X   Y
'L' NaN
'M' 'N'
'N' 'L'

我想要一个有 n 行的 DF,例如:

1  NaN
5   6
9   7

基本上,DF B 中的每一行决定了 DF A 中的哪些列要保留

TIA

标签: pythonpandas

解决方案


有点hacky,但一种使用方式pandas.Series.reset_index

def getloc(index):
    try:
        return df.loc[index[0], index[1]]
    except KeyError:
        return np.nan

new_df = df2.apply(lambda x: x.reset_index().apply(tuple, axis=1)).applymap(getloc)
print(new_df)

输出:

   X    Y
0  1  NaN
1  5  6.0
2  9  7.0

推荐阅读