gpt4 book ai didi

python - 如何将一列乘以另一列乘以该月第一天的值

转载 作者:行者123 更新时间:2023-12-01 01:08:31 25 4
gpt4 key购买 nike

我想将“A”列中的值乘以“B”列中该月第一天的值,因此在 1/2017 中,BTC 为 0.27,ETH 为 0.83。 2/2017 年 BTC 为 0.16,ETH 为 0.88。

我有以下数据框:

Date'       Symbol' A'  B'    'C'
1/1/2017 BTC 22 0.27 5.94
ETH 21 0.83 17.43
1/2/2017 BTC 23 0.26 6.21
ETH 24 0.88 19.02
1/3/2017 BTC 25 0.28 6.75
ETH 21 0.84 17.43
1/4/2017 BTC 24 0.22 6.48
ETH 23 0.83 19.09
... ... ...

1/30/2017 BTC 25 0.46 6.75
ETH 23 0.98 19.09
1/31/2017 BTC 12 0.27 3.24
ETH 11 0.73 9.13
2/1/2017 BTC 43 0.16 6.88
ETH 32 0.88 28.16
2/2/2017 BTC 24 0.26 3.84
ETH 21 0.55 18.48

“C”列是预期输出。

最佳答案

首先在MultiIndex的第一级创建DatetimeIndex:

lvl0 = pd.to_datetime(df.index.get_level_values(0), format='%m/%d/%Y')
lvl1 = df.index.get_level_values(1)

df.index = [lvl0, lvl1]

然后使用 DatetimeIndex.to_periodGroupBy.transform以及与原始 DataFrame 大小相同的系列的函数 first,因此可能有多个值:

first = df['B'].groupby([df.index.get_level_values(0).to_period('m'), lvl1]).transform('first')

df['C'] = df['A'] * first
<小时/>
print (df)
A B C
Date Symbol
2017-01-01 BTC 22 0.27 5.94
ETH 21 0.83 17.43
2017-01-02 BTC 23 0.26 6.21
ETH 24 0.88 19.92
2017-01-03 BTC 25 0.28 6.75
ETH 21 0.84 17.43
2017-01-04 BTC 24 0.22 6.48
ETH 23 0.83 19.09
...
2017-01-30 BTC 25 0.46 6.75
ETH 23 0.98 19.09
2017-01-31 BTC 12 0.27 3.24
ETH 11 0.73 9.13
2017-02-01 BTC 43 0.16 6.88
ETH 21 0.88 18.48
2017-02-02 BTC 24 0.26 3.84
ETH 21 0.88 18.48

关于python - 如何将一列乘以另一列乘以该月第一天的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55098315/

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