首页 > 解决方案 > Python pandas 两个数据框

问题描述

我有两个数据框,其中一个为 15 人 50 年,即 15 行 x 51 列。另一个有两列年龄和一个变量d。我想要第三个数据帧,它为第一个数据帧中的每个年龄提供 d 值,即它将像第一个 df 一样有 15 行和 51 列。我该怎么办?

标签: pythonpandas

解决方案


您的数据的迷你示例:

data = {'person': ['a','b','c'],'age1':[10,11,12],'age2':[11,12,13]}
df1 = pd.DataFrame(data)
data = {'var_d': ['a1','a2','a3','a4','a5'],'age':[10,11,12,13,14]}
df2 = pd.DataFrame(data)

数据框示例:

让我们从 df2 创建字典,将 var_d 值转换为年龄值:

age_to_var_dict = dict(zip(df2.age, df2.var_d))

age_to_var_d 字典

现在让我们遍历 df1 年龄值并将它们转换为 var_d 值:

df3 = df1.copy(deep=True)
def convert_age_to_var_d(col):
    result = []
    for i,val in enumerate(col):
        result.append(age_to_var_dict[val])
    return result
df3.iloc[:,1:] = df1.iloc[:,1:].apply(convert_age_to_var_d)
# rename age columns to var_d
df3.columns = ['person','var_d1','var_d2']

我们得到了 df3 和每个年龄的人 var_d: df3,每个年龄列都有 var_d 值


推荐阅读