pandas 使用查找将一列中的值Map/替换为另一列中的值

gzszwxb4  于 2023-03-16  发布在  其他
关注(0)|答案(1)|浏览(190)

三个 Dataframe 。在DataFrame1中,如何将From_To_列中的值替换为DataFrame2Name列中的相应值(适用于To_)和DataFrame3(对于From_)-请注意,DataFrame1From_To_的值是从1开始而不是从0开始的索引引用。所以To_中的值2应该引用DataFrame2中的Name2。非常感谢您的帮助。
Dataframe 1:

S    From_   To_
0   x    NaN     None
1   x    NaN     None
2   x    NaN     None
3   x    1.0     2
4   x    1.0     5
5   x    NaN     None
6   x    NaN     None
7   x    NaN     None
8   x    NaN     None
9   x    NaN     None
10  x    1.0     NaN

Dataframe 2:

A   Name
0  None  Name1
1  None  Name2
2  None  Name3
3  None  Name4
4  None  Name5

Dataframe 3:

A   Name
0  None  Name6
1  None  Name7
2  None  Name9
3  None  Name10

如何将DataFrame1更改为如下所示:

S    From_     To_
0   x    NaN       None
1   x    NaN       None
2   x    NaN       None
3   x    Name6     Name2
4   x    Name6     Name5
5   x    NaN       None
6   x    NaN       None
7   x    NaN       None
8   x    NaN       None
9   x    NaN       None
10  x    Name6     NaN
hs1ihplo

hs1ihplo1#

您可以简单地执行map

df1['From_'] = pd.to_numeric(df1['From_'], errors='coerce').sub(1).map(df3['Name'])
df1['To_']   = pd.to_numeric(df1['To_'], errors='coerce').sub(1).map(df2['Name'])
S  From_    To_
0   x    NaN    NaN
1   x    NaN    NaN
2   x    NaN    NaN
3   x  Name6  Name2
4   x  Name6  Name5
5   x    NaN    NaN
6   x    NaN    NaN
7   x    NaN    NaN
8   x    NaN    NaN
9   x    NaN    NaN
10  x  Name6    NaN

相关问题