gpt4 book ai didi

python - 使用 pandas 和字典中的数据生成加权平均值?

转载 作者:行者123 更新时间:2023-11-28 21:32:36 25 4
gpt4 key购买 nike

我有一个数据框:

             SALES 
Date
2018-03-31 123090
2018-04-30 116591
2018-05-31 119581
2018-06-30 117544
2018-07-31 129574
2018-08-31 118876
2018-09-30 129467
2018-10-31 126062
2018-11-30 128552
2018-12-31 104994
2019-01-31 149188
2019-02-28 118204

还有一本字典,价格:

{Oct: 11, Nov: 23, Dec: 34, Jan: 20, Feb: 30, Mar: 31, Apr: 22, May: 
23, Jun: 34, Jul: 20, Aug: 30, Sep: 31}

我想通过将 DataFrame 中的每个销售数字与字典中的相应月份相乘,然后除以总销售数字来计算加权平均价格。即从数据帧中获取 10 月份的销售额 126062,然后将其乘以字典中的 11 (Oct)。

我尝试添加月份列并重新排序数据框,然后使用有序字典,但我觉得我正在使用众所周知的大锤来解决这个问题。

             SUM  MONTH
Date
2019-01-31 129188.1 1
2019-02-28 118304.5 2
2018-03-31 123090.6 3
2018-04-30 116591.2 4
2018-05-31 119581.5 5
2018-06-30 117544.0 6
2018-07-31 129574.9 7
2018-08-31 118876.2 8
2018-09-30 109467.5 9
2018-10-31 126062.0 10
2018-11-30 128552.9 11
2018-12-31 104994.2 12

我还尝试查看 zip 并迭代数据帧和字典,但我正在努力寻找将两个数据集映射在一起的最佳方法。

我很高兴将字典转换为另一个数据框,如果这样更容易的话?

如有任何帮助,我们将不胜感激。

最佳答案

您可以将 map 与 DatetimeIndex 方法 strftime 结合使用:

其中 df、dataframe 和 dd、等待字典定义为,

d = {'SALES': {pd.Timestamp('2018-03-31 00:00:00'): 123090,
pd.Timestamp('2018-04-30 00:00:00'): 116591,
pd.Timestamp('2018-05-31 00:00:00'): 119581,
pd.Timestamp('2018-06-30 00:00:00'): 117544,
pd.Timestamp('2018-07-31 00:00:00'): 129574,
pd.Timestamp('2018-08-31 00:00:00'): 118876,
pd.Timestamp('2018-09-30 00:00:00'): 129467,
pd.Timestamp('2018-10-31 00:00:00'): 126062,
pd.Timestamp('2018-11-30 00:00:00'): 128552,
pd.Timestamp('2018-12-31 00:00:00'): 104994,
pd.Timestamp('2019-01-31 00:00:00'): 149188,
pd.Timestamp('2019-02-28 00:00:00'): 118204}}

df = pd.DataFrame(d)

dd = {'Oct': 11, 'Nov': 23, 'Dec': 34, 'Jan': 20, 'Feb': 30, 'Mar': 31, 'Apr': 22,'May':
23, 'Jun': 34, 'Jul': 20, 'Aug': 30,'Sep': 31}

使用

df['Adj Sales'] = df.index.strftime('%b').map(dd) * df['SALES']

输出:

             SALES  Adj Sales
2018-03-31 123090 3815790
2018-04-30 116591 2565002
2018-05-31 119581 2750363
2018-06-30 117544 3996496
2018-07-31 129574 2591480
2018-08-31 118876 3566280
2018-09-30 129467 4013477
2018-10-31 126062 1386682
2018-11-30 128552 2956696
2018-12-31 104994 3569796
2019-01-31 149188 2983760
2019-02-28 118204 3546120

关于python - 使用 pandas 和字典中的数据生成加权平均值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56117845/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com