合并数据帧后如何避免获得额外的不匹配值?

问题描述

我有一个包含多列的DataFrame:

#list
list = [('Bass',"Albert",15),('Bass',"Daniel",12),"Paul",31),"Tony",11),('Palmer',22),30),50),('Smith',29),9),24)] 
# Create a DataFrame object 
import pandas as pd
df = pd.DataFrame(list,columns =['Surname','Name','age'])

我希望每个Surnameage的{​​{1}}除age列中的值(即,对于Bass姓氏,用31,然后将Palmer除以30,以此类推),然后将这些值存储在名为Paul的新列中,并使这些结果与相应的age_normalized

相匹配
age_initial

现在是时候分割这些值并合并数据帧了

df = df.set_index("Surname")
df2 = df.loc[df.Name =="Paul"]

这是我的问题: results = df["age"]/df2['age'] merge_df = df.merge(results,left_index=True,right_index=True,suffixes = ("_initial","_normalized")) 合并时,每个名称都有4个结果,而不是一个

print

如何合并两个数据框并使初始年龄与相应的归一化年龄相匹配?

解决方法

为了解决这个问题,我先将 dfdf2 合并,而不是将 results 合并,然后再进行分割

df2_area = df2["age"]
mer = df.merge(df2_area,on="Surname")
mer[["age_norm"]] = mer[['age_x']].div(mer['age_y'].values,axis=0)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...