gpt4 book ai didi

python - 选择具有特殊条件的行

转载 作者:行者123 更新时间:2023-12-01 03:42:13 25 4
gpt4 key购买 nike

我有这个数据框:

TIMESTAMP equipmeent1 equipement2 class_energy
2016-05-10 04:30:00 107 0 high
2016-05-10 04:40:00 100 90 medium
2016-05-10 04:50:00 106 0 low
2016-05-10 05:00:00 107 0 high

我尝试选择具有特殊条件的行:

x.loc[x['class_energy'] == 'high',  x['TIMESTAMP'] > 2016-05-10 04:30:00 04:10:00,x['TIMESTAMP'] < 2016-05-10 05:00:00 ]

但是我遇到了这个问题:

IndexingError                             Traceback (most recent call last)
<ipython-input-241-b47c8396bb9a> in <module>()
----> 1 x.loc[x['class_energy'] == 'high', x['PERIODE_TARIF'] =='HP']

C:\Users\Demonstrator\Anaconda3\lib\site-packages\pandas\core\indexing.py

in getitem(self, key) 1292 1293 if type(key) is tuple: -> 1294 return self._getitem_tuple(key) 1295 else: 1296 return self._getitem_axis(key, axis=0)

C:\Users\Demonstrator\Anaconda3\lib\site-packages\pandas\core\indexing.py

in _getitem_tuple(self, tup) 802 continue 803 --> 804 retval = getattr(retval, self.name)._getitem_axis(key, axis=i) 805 806 return retval

C:\Users\Demonstrator\Anaconda3\lib\site-packages\pandas\core\indexing.py

in _getitem_axis(self, key, axis) 1437 return self._get_slice_axis(key, axis=axis) 1438 elif is_bool_indexer(key): -> 1439 return self._getbool_axis(key, axis=axis) 1440 elif is_list_like_indexer(key): 1441

C:\Users\Demonstrator\Anaconda3\lib\site-packages\pandas\core\indexing.py

in _getbool_axis(self, key, axis) 1301 def _getbool_axis(self, key, axis=0): 1302 labels = self.obj._get_axis(axis) -> 1303 key = check_bool_indexer(labels, key) 1304 inds, = key.nonzero() 1305 try:

C:\Users\Demonstrator\Anaconda3\lib\site-packages\pandas\core\indexing.py

in check_bool_indexer(ax, key) 1799 mask = com.isnull(result._values) 1800 if mask.any(): -> 1801 raise IndexingError('Unalignable boolean Series key provided') 1802 1803 result = result.astype(bool)._values

IndexingError: Unalignable boolean Series key provided

最佳答案

您需要使用 & 和条件并使用括号:

x.loc[(x['class_energy'] == 'high') & (x['TIMESTAMP'] > '2016-05-10 04:30:00') & (x['TIMESTAMP'] < '2016-05-10 05:00:00') ]

目前尚不清楚您在原始代码中随机包含 04:10:00 的意图

您必须使用 & 而不是 and,因为我们正在比较值数组,由于运算符优先级,条件也需要括在括号中

您所做的只是用 , 分隔每个条件,这在这里毫无意义,并导致评估错误,因为它将您的参数视为元组

此外,您的错误 x.loc[x['class_energy'] == 'high', x['PERIODE_TARIF'] =='HP'] 与您发布的代码不匹配,如果您想使用这 2 个条件:

x.loc[(x['class_energy'] == 'high') & (x['PERIODE_TARIF'] =='HP')]

应该可以

关于python - 选择具有特殊条件的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39394901/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com