【发布时间】:2020-11-23 19:46:18
【问题描述】:
我创建了一个 DataFrame 来保存能量记录器数据。现在这个 DataFrame 只存储一些随机数。作为索引,我使用pandas.core.indexes.datetimes.DatetimeIndex。使用weekday 属性,我可以计算出相应的工作日(0 代表星期一,1 代表星期二……)。
我预计周末不会有任何能源消耗。我的对应代码大概是:
# weekday > 4 => saturday and sunday
df.loc[df.index.weekday > 4, 'power'] = 0
这很好用。但是比方说,周三和周四没有消费。我希望相应的代码如下所示:
df.loc[(df.index.weekday == 2 or df.index.weekday == 3), 'power'] = 0
这不起作用。我收到以下错误:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
好的,pandas 提示我这些方法 any 和 all。但据我了解,它们并没有满足我的需求——或者至少我不知道如何使用它们来满足我的需求。
问题:
有谁知道,如何获得这样一个由某个布尔条件确定的 DataFrame 切片?
非常感谢!
附注:
我已经想出了一个解决方案 - 但它很不舒服:
df.loc[df.index.weekday == 2, 'power'] = 0
df.loc[df.index.weekday == 3, 'power'] = 0
想象一下,我想花几个小时或几分钟而不是几天来做同样的事情。必须有一种更简单的方法来做到这一点。
【问题讨论】:
标签: python-3.x pandas dataframe indexing