熊猫:如何将一系列功能应用于多对列

时间:2019-02-28 20:33:48

标签: python pandas dataframe

我正在使用旧的人口预测数据来确定不同城市的增长比率比例,然后将其乘以新近更新的增长数字,以获得新的预测数字。听起来可能并非如此,但是这个想法非常简单。

我创建的简化示例:

df = pd.DataFrame({2010: [100, 110, 120], 2015: [150, 155, 175], 2020: [180, 190, 200], 2025: [200, 210, 220]},
                  index = {'CityA', 'CityB', 'CityC'})
df

Beginning

之后,我的一系列功能是:

df['10-15'] = df[2015] - df[2010]
growth = df['10-15'].sum()
df['10-15 ratio'] = df['10-15']/growth

#Real Total growth is calculated from another dataframe
df2 = pd.DataFrame({2015: 200, 2020:210, 2025: 220}, index = ['real increase'])
df2

growth

growth2015 = df2.at['real increase', 2015]

df['New2015'] = df[2010] + growth2015*df['10-15 ratio']

最终,这将给我想要的结果,并使用最新的增长数字对投影进行调整。

df

End

现在的问题是,从2015年到2045年,我每年都这样做。我知道必须有一种方法可以在Python中永远不会复制和粘贴,但是我只是不知道怎么做。我应该如何实现,建立字典或功能?

谢谢

1 个答案:

答案 0 :(得分:0)

好吧,由于没有人回答,我只是继续尝试。我想出了如何通过功能做到这一点。我认为效率不是很高,但可以完成工作。如果可以的话,请添加其他方法

result.data.allKenticoCloudTypeBlogPost.edges.map(node => {  

    console.log(node.contentItems)
    createPage({
        path: `${node.contentItems.elements.url_slug.value}`,
        component: path.resolve(`./src/templates/blog-post.js`),
        context: {
            slug: node.contentItems.elements.url_slug.value,
        }
    })

});