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分钟才能将其标记为正确答案。。