- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试使用 between_time
函数。我已经将字符串类型时间格式化为日期时间
dataset['TimeStamp'] = pd.to_datetime(dataset['TimeStamp'],format)
并且我定义了搜索开始时间和结束时间:
start = datetime.time(9,40,0)
end = datetime.time(10,00,0)
然后我调用 dataset['TimeStamp'].between_time(start, end)
这是我得到的错误:
TypeError: Index must be DatetimeIndex
请问我该如何解决。谢谢
最佳答案
示例 - 我使用来自评论的信息:
import pandas as pd
import StringIO
import datetime
data = '''time --- value
1984-12-12 14:08:00 --- 1
1984-12-12 14:25:00 --- 2
1984-12-12 14:47:00 --- 4
1984-12-12 16:37:00 --- 3
1984-12-12 16:37:00 --- 9
1984-12-12 16:37:00 --- 5
1984-12-12 17:52:00 --- 3
1984-12-12 17:52:00 --- 7
1984-12-12 19:29:00 --- 2'''
#------------------------------------------------
df = pd.read_csv(StringIO.StringIO(data), sep=' --- ')
df['time'] = pd.DatetimeIndex(df['time'])
print "\nDataFrame:\n", df
print '\nIndex:', type(df.index)
#------------------------------------------------
df.set_index(keys='time', inplace=True)
print "\nDataFrame:\n", df
print '\nIndex:', type(df.index)
#------------------------------------------------
start = datetime.time(14,50,0)
end = datetime.time(18,0,0)
print "\nResult:\n", df['value'].between_time(start, end)
结果:
DataFrame:
time value
0 1984-12-12 14:08:00 1
1 1984-12-12 14:25:00 2
2 1984-12-12 14:47:00 4
3 1984-12-12 16:37:00 3
4 1984-12-12 16:37:00 9
5 1984-12-12 16:37:00 5
6 1984-12-12 17:52:00 3
7 1984-12-12 17:52:00 7
8 1984-12-12 19:29:00 2
Index: <class 'pandas.core.index.Int64Index'>
DataFrame:
value
time
1984-12-12 14:08:00 1
1984-12-12 14:25:00 2
1984-12-12 14:47:00 4
1984-12-12 16:37:00 3
1984-12-12 16:37:00 9
1984-12-12 16:37:00 5
1984-12-12 17:52:00 3
1984-12-12 17:52:00 7
1984-12-12 19:29:00 2
Index: <class 'pandas.tseries.index.DatetimeIndex'>
Result:
time
1984-12-12 16:37:00 3
1984-12-12 16:37:00 9
1984-12-12 16:37:00 5
1984-12-12 17:52:00 3
1984-12-12 17:52:00 7
Name: value, dtype: int64
关于python - 如何使用 dataframe between_time() 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24576786/
考虑一下: import pandas as pd import numpy as np idx2=[pd.to_datetime('2016-08-31 22:08:12.000'), p
假设我有一个带有 MultiIndex 的 DataFrame,如下所示: col col col col ... tstp
我尝试过滤 pandas 中的数据集,以仅获取属于特定时间段列表内的数据。我尝试在以下数据集上进行数据分析: data csv 此外,开始和结束时间作为以下 .csv 文件中的一列: csv spec
我正在尝试创建一个列,如果行值介于 09:00 和 17:00 之间,该列将赋值为 true。 我可以使用 between_time 轻松选择这些时间,但无法为新列分配 True、False。 df
我需要过滤掉特定时间的数据。 DataFrame 函数 between_time 似乎是正确的方法,但是,它只适用于数据帧的索引列;但我需要原始格式的数据(例如,数据透视表希望日期时间列具有正确的名称
我正在尝试使用 between_time 函数。我已经将字符串类型时间格式化为日期时间 dataset['TimeStamp'] = pd.to_datetime(dataset['TimeStamp
我有一个 pandas df,我使用 between_time a 和 b 来清理数据。我如何获得非_between_time 行为? 我知道我可以尝试类似的东西。 df.between_time['
这个问题在这里已经有了答案: Pandas: select DF rows based on another DF (5 个答案) 关闭 5 年前。 如果我有一个包含开始时间和结束时间的 DataF
我坚持使用 pandas 0.9.0,因为我在 python 2.5 下工作,因此我没有 between_time方法可用。 我有一个日期数据框,想过滤特定时间之间的所有日期,例如对于 DataFra
我是一名优秀的程序员,十分优秀!