簡體   English   中英

根據另一個數據框中的值生成新列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM