gpt4 book ai didi

python - 用另一个数据框中的值替换数据框中的值 - 正则表达式

转载 作者:行者123 更新时间:2023-11-28 22:10:45 25 4
gpt4 key购买 nike

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

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

enter image description here

输入数据如下图所示

enter image description here

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

enter image description here

我尝试使用下面的代码来做到这一点。尽管代码工作正常,但我没有看到任何替换发生。你能帮我解决这个问题吗?

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.男性”、“2.女性”。因此我使用了正则表达式

另请注意,其他几个列值也可以具有以 1 开头的映射值。例如:1. 单例,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

关于python - 用另一个数据框中的值替换数据框中的值 - 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56373708/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com