我有两个数据帧。 The first df-df1
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
获取相应编码部分的值进行硬编码。我该怎么办?
答案 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']
。提供示例数据后,该数据框将为空。