如何使用另一个数据帧的行在数据帧中查找值?

2024-09-29 19:30:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧df1,看起来像这样:

    field1
0   ALBER
2   LRRC1
3   JATOF

我还有一个df2

    0     1   2
0   0     3   0
1   1   711 908
2   2   319 290
3   3   974 546
4   4   213  55

其中字段1和2中的每个数字代表df1索引中的一个值。如何将df2的数字映射到df1的相应值

就像

    0         1       2
0   0     ALBER   JATOF
...

Tags: 数据代表数字df1df2field1alberlrrc1
2条回答

试试这个:

df3=df2.merge(df1, left_on="1", right_index=True).merge(df1, left_on="2", right_index=True, suffixes=("_1", "_2")).drop(["1", "2"], axis=1).rename(columns={"field1_1": "1", "field1_2": "2"})

对于我使用的示例数据:

import pandas as pd

df1=pd.DataFrame({"field1": ["abc", "xyz", "pqr", "ghi", "yyy"]})
df2=pd.DataFrame({"0": [1,2,3,4,5], "1":[0, 4 ,2,2,3], "2": [4,3,3,2,1]})

df3=df2.merge(df1, left_on="1", right_index=True).merge(df1, left_on="2", right_index=True, suffixes=("_1", "_2")).drop(["1", "2"], axis=1).rename(columns={"field1_1": "1", "field1_2": "2"})

print(df3)

输出:

0    1    2
0  1  abc  yyy
1  2  yyy  ghi
2  3  pqr  ghi
3  4  pqr  pqr
4  5  ghi  xyz

[Program finished]

ilocapplymap一起使用:

df2.iloc[:, 1:] = df2.iloc[:, 1:].apply(lambda x: x.map(df1['field1']))

   0      1      2
0  0  JATOF  ALBER
1  1    NaN    NaN
2  2    NaN    NaN
3  3    NaN    NaN
4  4    NaN    NaN

注意:我们得到NaN,因为没有711, 908等的索引号,但在原始数据帧中应该可以

相关问题 更多 >

    热门问题