【发布时间】:2018-07-30 04:36:48
【问题描述】:
我正在使用一个名为 pyhaystack 的模块从基于“标签”的楼宇自动化系统中检索数据(其余 API)。 Python 将返回数据字典。我试图将熊猫与下面的 If Else 语句一起使用,但我遇到了麻烦。 pyhaystack 可以很好地获取数据...
这将我连接到自动化系统:(工作正常)
from pyhaystack.client.niagara import NiagaraHaystackSession
import pandas as pd
session = NiagaraHaystackSession(uri='http://0.0.0.0', username='Z', password='z', pint=True)
此代码找到我的名为“znt”的标签,将字典转换为 Pandas,并过滤时间:(这两个点都很好)
znt = session.find_entity(filter_expr='znt').result
znt = session.his_read_frame(znt, rng= '2018-01-01,2018-02-12').result
znt = pd.DataFrame.from_dict(znt)
znt.index.names=['Date']
znt = znt.fillna(method = 'ffill').fillna(method = 'bfill').between_time('08:00','17:00')
我最感兴趣的是列名,最终我希望Python根据条件返回列名:
print(znt.columns)
print(znt.values)
返回:
Index(['C.Drivers.NiagaraNetwork.Adams_Friendship.points.A-Section.AV1.AV1ZN~2dT', 'C.Drivers.NiagaraNetwork.points.A-Section.AV2.AV2ZN~2dT'], dtype='object')
[[ 65.9087 66.1592]
[ 65.9079 66.1592]
[ 65.9079 66.1742]
...,
[ 69.6563 70.0198]
[ 69.6563 70.2873]
[ 69.5673 70.2873]]
我对 Pandas 数据框的这个名称最感兴趣。 C.Drivers.NiagaraNetwork.Adams_Friendship.points.A-Section.AV1.AV1ZN~2dT
对于我的两个数组,我将数据框中的数据减去 70 的值。 (工作得很好)
znt_sp = 70
deviation = znt - znt_sp
deviation = deviation.abs()
deviation
这就是我在 Pandas 中被绊倒的地方。如果偏差大于四,我希望 Python 打印列的名称,否则打印这个区域是正常的。任何提示将不胜感激..
if (deviation > 4).any():
print('Zone %f does not make setpoint' % deviation)
else:
print('Zone %f is Normal' % deviation)
Pandas 中的列名是: C.Drivers.NiagaraNetwork.Adams_Friendship.points.A-Section.AV1.AV1ZN~2dT
【问题讨论】:
标签: python python-3.x pandas data-science