首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于另一个dataframe更改dataframe列中的值

基于另一个dataframe更改dataframe列中的值
EN

Stack Overflow用户
提问于 2020-06-23 18:39:41
回答 1查看 48关注 0票数 0

我见过很多类似的问题,但没有回答我想要做的事情。

我有两个数据

包含手动输入的名称和公司详细信息的

  • Conn_df (例如,包含清理公司名称的Conn_df["Name", "Company_name", "Company_Address"]
  • Cleanse_df (例如Cleanse_df["Original_Company_Name", "Cleanse_Company_Name"]

))

这两个文件的数据都保存在导入到脚本中的csv文件中。

我想使用Conn_df.Company_Name中的值来更改Cleanse_df中的公司详细信息,其中Conn_df.Company_Name等于Cleanse_df.Original_Company_Name,并由Cleanse_df.Cleanse_Company_Name代替。

我试过:

Conn_df["Company"] = Conn_df["Company"].replace(Conn_df["Company"], Cleanse_df["Cleansed"])

替换()不使用关键字参数

我也试过:

Conn_df["Company"] = Conn_df["Company"].map(Cleanse_df.set_index("Original")["Cleansed"])

仅对唯一值索引对象有效的

重新索引

任何关于如何得到要替换的值的建议。我要注意的是,这两种数据格式都会运行到数万行,因此创建手动列表是不可能的。

EN

回答 1

Stack Overflow用户

发布于 2020-06-23 20:00:09

我想你想要这样的东西:

代码语言:javascript
复制
conn_df = pd.DataFrame({'Name':['Mac','K','Hutt'],
                    'Company_name':['McD','KFC','PH'],
                    'Company_adress':['street1','street2','street4']})
cleanse_df = pd.DataFrame({'Original_Company_Name':['McD'],'Cleanse_Company_Name': 
['MacDonalds']})
cleanse_df = cleanse_df.rename(columns={'Original_Company_Name':'Company_name'})
merged_df = conn_df.merge(cleanse_df,on='Company_name',how='left')
merged_df['Cleanse_Company_Name'].fillna(merged_df['Company_name'],inplace=True)
final_df =  merged_df[['Name','Company_adress','Cleanse_Company_Name']]\
    .rename(columns={'Cleanse_Company_Name':'Company_name'})

这将返回:

代码语言:javascript
复制
   Name Company_adress Company_name
0   Mac        street1   MacDonalds
1     K        street2          KFC
2  Hutt        street4           PH

您可以合并这两个dataframes,然后保留已替换的新值,如果没有替换名称的值,则名称将保持不变,这是通过and命令完成的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62541646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档