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

最棒的

我有如下所示的输入数据。这里的“性别”和“源自种族”是两列。我想用分类值替换它们的值1,2,3等。前-男1名,女2名

映射文件如下所示-示例2列

在此处输入图片说明

输入数据如下图所示

在此处输入图片说明

我希望我的输出数据框看起来像这样

在此处输入图片说明

我试图使用下面的代码来做到这一点。尽管代码可以正常工作,但我看不到任何替换发生的情况。你能帮我吗?

mapp = pd.read_csv('file2.csv')
data = pd.read_csv('file1.csv')
for col in mapp:
    if col in data.columns:
        print(col)
        s = list(mapp.loc[(mapp[col].str.contains('^\d')==True)].index)
        print("s is",s)
        for i in s:
           print("i is",i)
            try:
               value = mapp[col][i].split('. ')
               print("value 0 is",value[0])
               print("value 1 is",value[1])
               if value[0] in data[col].values:
               data.replace({col:{value[0]:value[1]}})
            except:
                print("column not present")
   else:
       print("No")

请注意,我只显示了两列,但实时显示可能超过600列。任何简单的优雅方法/建议都将有所帮助。由于我有两个单独的csv文件,因此有关合并/连接等的任何建议也将有所帮助,但请注意,我的映射文件包含的值为“ 1. Male”,“ 2。Female”。因此我用了正则表达式

还要注意,其他几个列值也可以具有以1. ex开头的映射值:1. Single,2。已婚,3。离婚等

期待您的帮助

耶斯列尔

DataFrame.replace与嵌套字典一起使用-第一个键定义替换的列名称,并通过函数创建另一个替换值Series.str.extract

df = pd.DataFrame({'Gender':['1.Male','2.Female', np.nan],
                   'Ethnicity':['1.Chinese','2.Indian','3.Malay']})
print (df)
     Gender  Ethnicity
0    1.Male  1.Chinese
1  2.Female   2.Indian
2       NaN    3.Malay

d={x:df[x].str.extract(r'(\d+)\.(.+)').dropna().set_index(0)[1].to_dict() for x in df.columns}
print (d)
{'Gender': {'1': 'Male', '2': 'Female'}, 
 'Ethnicity': {'1': 'Chinese', '2': 'Indian', '3': 'Malay'}}

df1 = pd.DataFrame({'Gender':[2,1,2,1],
                   'Ethnicity':[1,2,3,1]})
print (df1)
   Gender  Ethnicity
0       2          1
1       1          2
2       2          3
3       1          1

#convert to strings before replace
df2 = df1.astype(str).replace(d)
print (df2)
   Gender Ethnicity
0  Female   Chinese
1    Male    Indian
2  Female     Malay
3    Male   Chinese

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

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

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

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

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

使用查找另一个数据框替换一个数据框中的文本

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

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

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

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

根据另一个数据框替换一个数据框中的Value

是否存在R函数,以便仅当来自另一个公共变量的值相等时,才用另一个数据框中的值替换一个数据框中的值?

大熊猫:基于两列,用另一个数据框的值替换一个数据框的值

给定多个列作为键,用另一个数据框中的行替换一个数据框中的行

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

用另一个数据框中的值替换一个数据框中的逗号分隔值

用R中另一个数据框的值合并和替换一个数据框的值

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

用R中另一个数据框的特定值替换行中的值

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

用另一个数据框(不是合并)引用的值替换/替换一个数据框中的所有值

R-有条件地用另一个数据框中的值替换值

熊猫用另一个数据框的值替换一个数据框的值

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

用熊猫中另一个数据框的列替换一个数据框的列

根据另一个数据框替换一个数据框中的列中的多个值

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

用另一个数据框中同名列的平均值替换一个数据框中的零值列

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

用另一个数据框元素的值替换数据框的元素