我有一个< code > pandas < code > data frame ,其日期列名为< code>SDate,我希望找到< code>SDate的时间在下午2点到4点之间的行,类似于:
d=pd.read_csv("data.csv",parse_dates=['SDate'])
indices=np.nonzero(d.SDate.hour>=2&d.SDate.hour<=4)[0]
但这不是那样工作的。如何以最熊猫和蟒蛇的方式做到这一点?
您需要用括号分隔条件:
s = pd.to_datetime(['2018-01-01 02:00', '2015-12-25 15:00'])
indices = np.nonzero(s.hour>=2 & s.hour<=4)[0]
# TypeError: unsupported operand type(s) for &: 'int' and 'Int64Index'
indices = np.nonzero((s.hour>=2) & (s.hour<=4))[0]
# array([0], dtype=int64)
请注意,您可以使用pd.Series.argmax
进行此计算,因为标量输出就足够了:
indices = ((s.hour>=2) & (s.hour<=4)).argmax()
# 0
也可以使用between_time
d = d.set_index('SDate')
d.between_time(start_time = '14:00', end_time = '16:00')
如果你想要一个面具,这应该做到:
import pandas as pd
df = pd.DataFrame(data=pd.date_range(start='1/1/2018', end='1/2/2018', freq='H'), columns=['SDate'])
mask = (df.SDate.dt.hour >= 2) & (df.SDate.dt.hour <= 4)
print(mask.values)
输出
[False False True True True False False False False False False False
False False False False False False False False False False False False
False]
在上面的示例中,df是具有日期时间dtype列< code>SDate的DataFrame,dt是datetimelike属性(如hour)的访问器对象。
问题内容: 如何获得系列中最常出现的物品? 考虑系列 返回值应该是 问题答案: 您可以使用并提取第一个值: 这不一定是低效率的。与往常一样,对您的数据进行测试以查看适合的数据。
我如何获得所有列没有一个特定的? 示例:如果我有一个包含n列的dataframe、、...,如何获得没有的所有列?
问题内容: 我有一个包含布尔值的pandas对象。如何获得包含每个值逻辑的序列? 例如,考虑一个包含以下内容的系列: 我想要获得的系列将包含: 这似乎应该相当简单,但显然我放错了我的mojo =( 问题答案: 要反转布尔系列,请使用: 使用Python2.7,NumPy 1.8.0,Pandas 0.13.1: 从Pandas 0.13.0开始,Series不再是;的子类。它们现在是的子类。这可能
我有一个包含布尔值的pandas对象。如何获得包含每个值的逻辑
获取相应列内容满足条件的索引范围的最有效方法是什么。。类似于以标记开始并以“body”标记结束的行。 例如,数据框如下所示 我要得到行索引1-3 有人能提出最具蟒蛇风格的方法来实现这一点吗?
我有一个数据框,如下所示,带有网站名称和每个网站的日期范围。 我希望找到每个站点的开始和结束日期,并按如下方式布置数据框架: 我知道我可以找到整个范围的最小值和最大值,如下所示: 只是不确定最好的方法是将它分别应用于每个站点。