[英]generate a new column based on values from another data frame
我有一個包含一些個人信息的數據框:
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 = pd.DataFrame({'year':range(1980,2000),'growth_rate':np.random.randn(20)})
growth
所以它會是這樣的:
growth_rate year
0 -0.474861 1980
1 -0.898530 1981
2 -0.730102 1982
3 -0.231560 1983
4 -0.023014 1984
...
現在我想在df
添加一個新列,這是每個人在十歲時的增長率,因此對於人0,它將是1990年,對於人2,它將是1991年等等。增長率數據來自數據框架的growth
。 結果數據框應如下所示:
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:列的順序似乎是按字母順序排列的,比如人之前的birth_year和年前的growth_rate,不知道如何解決這個問題。
您可以在臨時列上調用map
並通過將索引設置為列'year'來傳遞您的其他df growth
,這將執行查找:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.