首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于来自另一个数据帧的查找值创建pandas列

基于来自另一个数据帧的查找值创建pandas列
EN

Stack Overflow用户
提问于 2019-01-05 06:56:28
回答 2查看 8.9K关注 0票数 4

我有一个pandas数据帧,它有一些按小时计算的数据值(这也是这个查找数据帧的index )。数据帧如下所示:

代码语言:javascript
运行
复制
In [1] print (df_lookup) 
Out[1] 0     1.109248
       1     1.102435
       2     1.085014
       3     1.073487
       4     1.079385
       5     1.088759
       6     1.044708
       7     0.902482
       8     0.852348
       9     0.995912
       10    1.031643
       11    1.023458
       12    1.006961
       ...
       23    0.889541

我想将这个查找数据帧中的值相乘,以创建另一个数据帧的列,该数据帧以datetime作为索引。数据帧如下所示:

代码语言:javascript
运行
复制
In [2] print (df)
Out[2] 
Date_Label           ID  data-1  data-2    data-3
2015-08-09 00:00:00  1   2513.0    2502     NaN  
2015-08-09 00:00:00  1   2113.0    2102     NaN  
2015-08-09 01:00:00  2   2006.0    1988     NaN  
2015-08-09 02:00:00  3   2016.0    2003     NaN 
...
2018-07-19 23:00:00  33  3216.0    333      NaN  

我想从data-2列计算data-3列,其中赋予'data-2‘列的权重取决于df_lookup中的相应值。我通过遍历索引获得所需的值,如下所示,但这太慢了:

代码语言:javascript
运行
复制
for idx in df.index:
   df.loc[idx,'data-3'] = df.loc[idx, 'data-2']*df_lookup.at[idx.hour]

有没有更快的方法可以被别人建议?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-05 07:03:36

使用.loc

代码语言:javascript
运行
复制
df['data-2']*df_lookup.loc[df.index.hour].values
Out[275]: 
Date_Label
2015-08-09 00:00:00    2775.338496
2015-08-09 00:00:00    2331.639296
2015-08-09 01:00:00    2191.640780
2015-08-09 02:00:00    2173.283042
Name: data-2, dtype: float64
#df['data-3']=df['data-2']*df_lookup.loc[df.index.hour].values
票数 5
EN

Stack Overflow用户

发布于 2019-01-05 07:03:51

我可能会试着做一个连接。

代码语言:javascript
运行
复制
# Fix column name
df_lookup.columns = ['multiplier']

# Get hour index
df['hour'] = df.index.hour

# Join
df = df.join(df_lookup, how='left', on=['hour'])
df['data-3'] = df['data-2'] * df['multiplier']
df = df.drop(['multiplier', 'hour'], axis=1)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54047273

复制
相关文章

相似问题

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