Python比较两个数据帧

2024-09-26 22:53:23 发布

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

比较两个数据帧//将一个数据帧与另一个数据帧解密

大家好,谢谢你们的帮助

我有两个数据帧。第一个(df1)包含我的所有数据,包括一列缩写(df1[ab]),我希望通过第二个数据帧(df2)将其转换为数字。df2包含两列,一列使用相同的缩写(df2[key]),另一列使用相关的数字(df2[value])

我的目标是使用第二个数据帧作为第一个数据帧的解密工具。我想将df1[ab]与df2[key]进行比较,并在df1中创建一个新列,该列按正确的顺序包含来自df2[value]的正确数字。因为真正的缩写列表很长,我不想用大量的“if语句”来完成这项任务

例如:

import pandas as pd
import numpy as np

abbreviations = ["Sl2","Sl4","Ss","Tu4","Slu","Su2/Su3","Ut2", "Ss","Sl2","Slu","Slu"]
dictab = {"ab": abbreviations}
df1 = pd.DataFrame(dictab)

key = ["Ss","Sl2","Sl3","Sl4","Slu"]
value = [11,25,27,30,33]
dictkv = {"key":key, "value":value}
df2 = pd.DataFrame(dictkv)

因此,df1应包含一个新列df1[result],该列应按以下顺序包含以下值:

print(df1)
         ab   result
0       Sl2       25 
1       Sl4       30
2        Ss       11
3       Tu4      NaN
4       Slu       33
5   Su2/Su3      NaN
6       Ut2      NaN
7        Ss       11
8       Sl2       25
9       Slu       33
10      Slu       33

任何帮助都将不胜感激

干杯,Jato


Tags: 数据keyimportab顺序value数字nan
1条回答
网友
1楼 · 发布于 2024-09-26 22:53:23

如果您只需要附加列:

df1.merge(df2, left_on='ab', right_on='key', how='left')

输出

         ab  key    value
0       Sl2  Sl2    25.0
1       Sl4  Sl4    30.0
2        Ss  Ss     11.0
3       Tu4  NaN     NaN
4       Slu  Slu    33.0
5   Su2/Su3  NaN     NaN
6       Ut2  NaN     NaN
7        Ss  Ss     11.0
8       Sl2  Sl2    25.0
9       Slu  Slu    33.0
10      Slu  Slu    33.0 

如果需要匹配数组,请执行以下操作:

df1.merge(df2, left_on='ab', right_on='key', how='left').value.values

输出

array([25., 30., 11., nan, 33., nan, nan, 11., 25., 33., 33.])

相关问题 更多 >

    热门问题