【问题标题】:Pandas dataframe: calculating variation over years熊猫数据框:计算多年来的变化
【发布时间】:2017-11-23 08:41:06
【问题描述】:

我有一个这样的熊猫数据框

Years {2000, ..., 2001, ..., 2002, ...}
product {'A', 'B', 'C', 'D', ...}
price $ {10, 11, 12, 13, 14, ...}

所以,我有很多产品,多年来每种产品的价格都不同 我想年复一年地计算每个产品的年度演变

我可以使用 for 循环来做到这一点,在该循环中,我为每一行查找产品和 year+1 以获取价格,但这听起来很繁重且执行时间很长。

有没有更好的方法来做到这一点?

最好的(用于以后的目的)是得到类似的东西

Years {2000, ..., 2001, ..., 2002, ...}
product {'A', 'B', 'C', 'D', ...}
price $ {10, 11, 12, 13, 14, ...}
next price $ {11, 13, 14, 12, 14, ...}

最后我知道 2000 年的产品 A 的价格为 10 美元,下一个价格(2001 年)为 11 美元

希望你能理解我! 谢谢大家 自动曝光

【问题讨论】:

    标签: python python-2.7 pandas numpy dataframe


    【解决方案1】:
    df = pd.DataFrame({'Years': [2000]*4+[2001]*2+[2000]*2+[2001]*2+[2002]*4,
                       'Product': [np.random.choice(['A', 'B', 'C', 'D']) for _ in range(0, 14)],
                       'Price': np.random.uniform(1,5, size=14)})
    
    res = df.sort_values('Years').set_index('Years').groupby('Product').apply(lambda x: x['Price'].diff())
    
    Product  Years
    A        2001          NaN
    B        2001          NaN
             2001     3.176459
             2002    -0.743620
    C        2000          NaN
             2000     1.450093
             2001    -0.040187
             2002    -3.237749
    D        2000          NaN
             2000    -0.670978
             2000     0.434457
             2000     0.280269
             2002    -0.002989
             2002     2.671679
    

    【讨论】:

    • 非常感谢!我可以使用 diff() 来获得其他计算的下一个价格。
    • 太棒了!很高兴能提供帮助。
    猜你喜欢
    • 1970-01-01
    • 2017-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多