首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据来自另一个数据from的值更新数据

根据来自另一个数据from的值更新数据
EN

Stack Overflow用户
提问于 2018-10-31 22:01:50
回答 2查看 82关注 0票数 1

我有两个数据帧如下所示:

代码语言:javascript
复制
            A   B
date        
2017-10-5   2   3
2017-10-6   5   5
2017-11-5   7   8
2017-11-6   11  13


             W1     W2
date        
2017-09-30  -0.2    0.01
2017-10-31  -0.003  0.04

我想创建一个新的数据框架,其中包含以下内容:

代码语言:javascript
复制
            W1 * A       W2 * B
date        
2017-10-5   -0.2 * 2     0.01 * 3
2017-10-6   -0.2 * 5     0.01 * 5
2017-11-5   -0.003 * 7   0.04 * 8
2017-11-6   -0.003 * 11  0.04 * 13
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-31 22:04:29

np.repeat上使用df2和乘法。看上去指数在这里不起任何作用。

代码语言:javascript
复制
df1 = df1.mul(np.repeat(df2.values, 2, axis=0))

或者,更广泛地说,

代码语言:javascript
复制
df1 = df1.mul(np.repeat(df2.values, len(df1) // len(df2), axis=0))
print(df1)
               A     B
date                  
2017-10-5 -0.400  0.03
2017-10-6 -1.000  0.05
2017-11-5 -0.021  0.32
2017-11-6 -0.033  0.52

其中len(df1) // len(df2)计算它们大小的比率。

票数 1
EN

Stack Overflow用户

发布于 2018-10-31 22:28:28

如果索引确实意味着什么,即您有一个值在某个日期发生了更改,并且您希望继续使用它,直到它下次更改为止。然后,您可以使用reindex命令和参数method='ffill'创建一个与原始数据create对齐的数据。下面是它的样子:

代码语言:javascript
复制
import pandas as pd
import dateutil

df = pd.DataFrame([['2017-10-5',2,3],
                  ['2017-10-6',5,5],
                  ['2017-11-5',7,8],
                  ['2017-11-6',11,13]],
                  columns = ['date','A','B'])
df['date'] = df['date'].apply(dateutil.parser.parse)
df = df.set_index('date')

wdf = pd.DataFrame([['2017-09-30',-0.2,0.01],
                    ['2017-10-31',-0.03,0.04]],
                     columns=['date','W1','W2'])
wdf['date'] = wdf['date'].apply(dateutil.parser.parse)
wdf = wdf.set_index('date')
wdf_r = wdf.reindex(df.index,
                    method='ffill')

res = df.drop(['A','B'],axis=1).assign(W1_x_A = wdf_r.W1 * df.A,
                                       W2_x_B = wdf_r.W2 * df.B)
print(res)

哪种输出

代码语言:javascript
复制
            W1_x_A  W2_x_B
date                      
2017-10-05   -0.40    0.03
2017-10-06   -1.00    0.05
2017-11-05   -0.21    0.32
2017-11-06   -0.33    0.52
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53092565

复制
相关文章

相似问题

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