热线电话:13121318867

登录
2019-03-11 阅读量: 719
将另一列上的一列乘以该月第一天的值

我想将“A”列中的值乘以“B”列中每月第一天的值,因此在1/2017中,BTC为0.27,ETH为0.83。在2017年2月,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'是预期输出。

解决办法:首先在第一级创建DatetimeIndex MultiIndex:

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_period具有GroupBy.transform与功能first的系列大小相同的像原来的数据帧,所以可能多个值:

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

df['C'] = df['A'] * first

8.7591
2
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子