映射2个数据框并替换目标数据框中匹配值的标头

ky

我有一个数据框:df1

  SAP_Name  SAP_Class  SAP_Sec
  Avi       5          C 
  Rison     6          A 
  Slesh     7          B 
  San       8          C 
  Sud       7          B 

df2:

Name_Fi Class

Avi     5 
Rison   6 
Slesh   7 

我正在尝试将df2与df1匹配,以便匹配的值应具有与df1相同的标头。

SAP_Name  SAP_Class
 Ankan          5
 Rison          6
 Slesh          7

下面是我正在使用的代码:

d = {}
for col2 in df2.columns:
    for col1 in df1.columns:
        cond = df2[col2].isin(df1[col1]).all()
        if cond:
           d[col2] = col1
df2 = df2.rename(columns=d)
print (df2)

我可以在一个小文件中获得所需的输出,但是我的实际文件有112444行×446列,要更改的目标文件有3行×35列,在这种情况下,代码运行了很长时间。有人可以在这里帮我吗?

耶斯列尔

在我看来,如果性能是重要的用途issubsetset

d = {}
for col2 in df2.columns:
    for col1 in df1.columns:
        cond = set(df2[col2]).issubset(df1[col1])
        if cond:
           d[col2] = col1
df2 = df2.rename(columns=d)
print (df2)
  SAP_Name  SAP_Class
0      Avi          5
1    Rison          6
2    Slesh          7

编辑:

#create dictioanry of Series without dupes
dfs1 = {col1: df1[col1].drop_duplicates() for col1 in df1.columns}
#print (dfs1)

#create dictionary of sets
set2 = {col2: set(df2[col2]) for col2 in df2.columns}
#print (set2)

#loop buy both dictionaries and find columns for rename
d = {}
for col2, v2 in set2.items():
    for col1, v1 in dfs1.items():
        cond = v2.issubset(v1)
        if cond:
           d[col2] = col1
df2 = df2.rename(columns=d)
print (df2)
  SAP_Name  SAP_Class
0      Avi          5
1    Rison          6
2    Slesh          7

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

匹配2个数据框列中的元素并替换为指定的值

如何将值从另一个数据框映射到另一个数据框的标头

替换数据框中的值仅与另一个数据框中匹配的值有关

根据第二个数据框列中的匹配替换“数据框列”中的值

根据另一个数据框中的匹配ID替换数据框列值

Python-根据另一个数据框匹配替换数据框中的值

使用2个数据框(R)匹配和替换值

我有两个数据框。我想根据条件将一个数据框的值替换为另一数据框的标头值

大熊猫在2个数据框中的映射值和外连接+聚合值

用另一个数据框中匹配行中的值替换丢失的数据

如何从匹配 2 列的另一个数据框中更新数据框的列值?

使用另一个数据框替换数据框中的零值

用另一个数据框替换数据框中的值

向量化R中2个数据框列之间的匹配值

如何创建新列,将值与其他数据框中的标头匹配

从另一个数据框中替换一个数据框中的值

将列的值与另一个数据框列匹配并替换值

使用另一个数据框替换数据框值,而无需索引匹配

使用数据框中的值作为键来替换第二个数据框中的值

从另一个数据框中的列值替换pandas数据框中的列值

将数据框中的值替换为另一个数据框中的值

熊猫:根据条件将数据框中的值替换为另一个数据框中的值

用另一个数据框中的值替换熊猫数据框中的多个值的最快方法

如何将一个数据框的单列中的值映射到另一个数据框的两列并提取映射的值?

根据条件,将数据框的某些值替换为另一个数据框中的值

如果另一个数据框值小于0,则替换R数据框中的值

如何根据另一个数据框中的查找值替换熊猫数据框值?

当部分字符串匹配时,如何基于字典替换整个数据框中的值?

根据索引合并两个数据框,替换其他列中的匹配值