首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将另一列上的一列乘以月份第一天的值

如何将另一列上的一列乘以月份第一天的值
EN

Stack Overflow用户
提问于 2019-03-11 09:01:53
回答 1查看 36关注 0票数 1

我希望将'A‘列中的值乘以'B’栏中月份第一天的值,因此在1/2017中,BTC为0.27,ETH为0.83。BTC为0.16,ETH为0.88。

我有以下数据:

代码语言:javascript
复制
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‘是预期的输出。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-11 09:11:32

首先在DatetimeIndex的第一级创建MultiIndex

代码语言:javascript
复制
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一起使用,函数first用于与原始DataFrame相同大小的系列,因此可能有多个值:

代码语言:javascript
复制
first = df['B'].groupby([df.index.get_level_values(0).to_period('m'), lvl1]).transform('first')

df['C'] = df['A'] * first
代码语言:javascript
复制
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
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55098315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档