Python 基于另一数据帧中的值生成新列

Python 基于另一数据帧中的值生成新列,python,pandas,Python,Pandas,我有一个包含一些个人信息的数据框: df = pd.DataFrame({'person':range(5), 'birth_year':range(1980, 1985)}) df 看起来是这样的: birth_year person 0 1980 0 1 1981 1 2 1982 2 3 1983 3 4

我有一个包含一些个人信息的数据框:

    df = pd.DataFrame({'person':range(5), 'birth_year':range(1980, 1985)})
    df
看起来是这样的:

        birth_year  person
    0       1980         0
    1       1981         1
    2       1982         2
    3       1983         3
    4       1984         4
        growth_rate year
    0   -0.474861   1980
    1   -0.898530   1981
    2   -0.730102   1982
    3   -0.231560   1983
    4   -0.023014   1984
    ...
        birth_year  person         growth_10
    0       1980         0          value_1990
    1       1981         1          value_1991
    2       1982         2          value_1992
    3       1983         3          value_1993
    4       1984         4          value_1994
另一个数据框包含一些年度增长数据:

    growth = pd.DataFrame({'year':range(1980,2000),'growth_rate':np.random.randn(20)})
    growth
所以它是这样的:

        birth_year  person
    0       1980         0
    1       1981         1
    2       1982         2
    3       1983         3
    4       1984         4
        growth_rate year
    0   -0.474861   1980
    1   -0.898530   1981
    2   -0.730102   1982
    3   -0.231560   1983
    4   -0.023014   1984
    ...
        birth_year  person         growth_10
    0       1980         0          value_1990
    1       1981         1          value_1991
    2       1982         2          value_1992
    3       1983         3          value_1993
    4       1984         4          value_1994
现在我想在
df
中添加一个新列,它是每个人在10岁时的增长率,因此对于0人来说是1990年,对于2人来说是1991年,等等。。增长率数据来自数据框
growth
。生成的数据帧应如下所示:

        birth_year  person
    0       1980         0
    1       1981         1
    2       1982         2
    3       1983         3
    4       1984         4
        growth_rate year
    0   -0.474861   1980
    1   -0.898530   1981
    2   -0.730102   1982
    3   -0.231560   1983
    4   -0.023014   1984
    ...
        birth_year  person         growth_10
    0       1980         0          value_1990
    1       1981         1          value_1991
    2       1982         2          value_1992
    3       1983         3          value_1993
    4       1984         4          value_1994
我该怎么办

PS:列的顺序似乎是按字母顺序排列的,比如出生在人之前的一年,增长率在人之前的一年,不知道如何解决这个问题。

您可以调用一个临时列,并通过将索引设置为“年”列传递您的其他df
增长
,这将执行查找:

In [3]:
df['growth_10'] = (df['birth_year'] + 10).map(growth.set_index('year')['growth_rate'])
df

Out[3]:
   birth_year  person  growth_10
0        1980       0   0.477596
1        1981       1   2.383193
2        1982       2  -1.121759
3        1983       3   0.573546
4        1984       4   1.195171

如果我的答案解决了你的问题,那么请记住接受它,这样它就不会一直没有答案,在我的答案的左上角会有一个空的勾号,谢谢:)我正在等待,只是我必须等待至少5分钟才能将其标记为正确答案。。