首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >熊猫数据:基于if条件的浮动到列值的加法

熊猫数据:基于if条件的浮动到列值的加法
EN

Stack Overflow用户
提问于 2022-04-01 12:39:03
回答 2查看 81关注 0票数 0

相对来说,Python和Pandas的新手,最终承认失败是因为我自己搞不清楚。我有一个熊猫数据从我们的能源供应商API,每行是30分钟间隔显示批发能源成本在p/kWH 'value_exc_vat',房屋的太阳能输出‘出口’和日期戳‘日期时间’。

代码语言:javascript
复制
| index |'value_exc_vat'|'datetime'|'export'|'hour'|'export_rate'|'export_rate_var'|

“‘hour”是从日期开始为每一行取下来的,例如13、14、15、16等。

要计算价格/千瓦时,我需要计算

代码语言:javascript
复制
0.97 x 'value_exc_vat' + peak_rate_uplift

peak_rate_uplift仅在16:19 (含)小时内应用。

我已经试过了所有我能想到的方法,但我无法让它起作用。

代码语言:javascript
复制
peak_rate = [16,17,18,19]

for hour in df['hour']:
    if hour == peak_rate:
        df['export_rate_var'] = (df['export_rate'] + peak_rate_uplift)
    else:
        df['export_rate_var'] = df['export_rate']

打印if函数的输出,我可以看到“hour”是为正确的值选择的,但是语句的其余部分没有添加我期望的peak_rate_uplift。

任何建议或帮助如何应用到选定的行将不胜感激,感觉应该是一些简单的东西,但我已经在这3天了.

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-04-01 13:15:41

你可以用:

代码语言:javascript
复制
peak_rate = [16,17,18,19]

df['export_rate_var'] = (df['export_rate'] + df.hour.isin(peak_rate) * peak_rate_uplift)

其中df.hour.isin([peak_rate])返回一个布尔序列。这与整数peak_rate_uplift相乘,得到了一个整数序列,该整数为0,其中小时不在峰值速率小时内。

票数 0
EN

Stack Overflow用户

发布于 2022-04-01 12:58:53

这是否有效:

代码语言:javascript
复制
peak_rate = [16,17,18,19]

for i in range(len(df)):
    if df.hour.iloc[i].isin(peak_rate):
        df['export_rate_var'] = (df['export_rate'] + peak_rate_uplift)
    else:
        df['export_rate_var'] = df['export_rate']
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71707052

复制
相关文章

相似问题

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