从与第二个数据帧中的另一列对应的数据帧中获取行值

时间:2018-07-30 21:55:23

标签: python pandas dataframe

我有两个数据帧。 The first df-df1

第二个是The second df-df2

import pandas as pd
d = {'0': [2446, 2446,2445], '1': [2447, 2447, 2446],'2':[3537,177,3535],'3':[177,17,2903]}
df1 = pd.DataFrame(data=d)

d={'PART_NO': ['KH661-10059','KH661-10057', 'KH661-10058'], 'PART_NO_ENCODED': [2447, 2446, 2445]}
df2 = pd.DataFrame(data=d)

我想获得与编码后的零件相对应的零件号,我可以这样获得:

df2[df2['PART_NO_ENCODED'].isin([789,1023,569])]

但是我的问题是我不想对要从df1提取每一列并从df2获取相应编码部分的值进行硬编码。我该怎么办?

1 个答案:

答案 0 :(得分:0)

您可以使用字典将列名从df1映射到df2的切片。字典理解是一种方法。

res = {col: df2[df2['PART_NO_ENCODED'].isin(df1[col])] for col in df1}

print(res['0'])

       PART_NO  PART_NO_ENCODED
1  KH661-10057             2446
2  KH661-10058             2445

例如,res['1']将提取df2的切片,其中在PART_NO_ENCODED中找到df1['1']。提供示例数据后,该数据框将为空。