python - 如何检索相应名称的值以在方程式中将其计算为python中df中的新列
问题描述
这是我现在拥有的df:
type onTime offTime device
0 Light1 2019-10-28 10:30:23 2019-10-28 10:30:23 8655
1 Light2 2019-10-28 10:20:23 2019-10-28 11:30:23 8222
2 Fan1P3 2019-10-28 12:30:23 2019-10-28 12:45:23 8702
3 Heater1 2019-10-28 15:30:23 2019-10-28 16:30:23 8204
4 Kettle1 2019-10-28 18:30:23 2019-10-28 20:30:23 8750
这是相应类型的值的库:
type device power
0 Light1 8655 30
1 Light2 8222 45
2 Fan1P3 8702 102
3 Heater1 8204 1200
4 Kettle1 8750 2000
我正在尝试匹配设备并输入 df 与库以检索功率以使用它计算总功率,公式如下:
duration = offTime - onTime
totalpower = duration * power
解决方案
首先强迫你onTime
和:offTime
Datetime
df1[["onTime","offTime"]] = df1[["onTime","offTime"]].apply(pd.to_datetime)
然后您可以轻松计算差异:
df1["duration"] = (df1["offTime"]-df1["onTime"]).dt.total_seconds() # I assume you are calculating base on total seconds
最后通过将列映射到来计算您的type
总数df2
:
df1["total"] = df1["duration"]*(df1["type"].map(dict(df2[["type","power"]].values)))
print (df1)
结果:
type onTime offTime device duration total
0 Light1 2019-10-28 10:30:23 2019-10-28 10:30:23 8655 0.0 0.0
1 Light2 2019-10-28 10:20:23 2019-10-28 11:30:23 8222 4200.0 189000.0
2 Fan1P3 2019-10-28 12:30:23 2019-10-28 12:45:23 8702 900.0 91800.0
3 Heater1 2019-10-28 15:30:23 2019-10-28 16:30:23 8204 3600.0 4320000.0
4 Kettle1 2019-10-28 18:30:23 2019-10-28 20:30:23 8750 7200.0 14400000.0
推荐阅读
- javascript - 试图学习 tensorflow.js,但需要一个更简单的例子,比如 Brain.js
- jquery - addClass 在 iphone Chrome 上不起作用
- java - JavaFX 中的线程和绑定
- html - Visual Studio WebBrowser 以不同于 IE 的方式呈现网页
- python - 将多个RDD行转换为pyspark中的一行
- mysql - MySQL 从多个表中的列总数中插入(复合?)行
- c - C - 程序为 SEGFAULT 提供了 for 循环,但并非没有
- c# - 如何使用 CodeDom 进行异步调用和函数定义?
- c++ - 用 C++ 编写类型类
- hibernate - 从 DB2 获取 DB2 SQL 错误:SQLCODE=-803, SQLSTATE=23505