我有一个数据框,其中列名是这样的数据时间对象:
17:02:00 17:03:00 ...
2017-09-18 1236.0 463.0
2017-09-19 791.0 476.0
2017-09-20 2086.0 988.0
如何根据伪代码中的列名值选择数据框的一部分:
df_slice = df.column_name >= datetime.time(8, 30) & df.column_name < datetime.time(9, 0)
最佳答案
我认为您需要先通过 to_datetime
将值转换为 times
+ time
然后按条件选择列:
df.columns = pd.to_datetime(df.columns).time
df_slice = df.loc[:, (df.columns >= datetime.time(8, 30)) &
(df.columns < datetime.time(9, 0))]
示例:
print (df)
17:02:00 08:45:00
2017-09-18 1236.0 463.0
2017-09-19 791.0 476.0
2017-09-20 2086.0 988.0
df.columns = pd.to_datetime(df.columns).time
df_slice = df.loc[:, (df.columns >= datetime.time(8, 30)) &
(df.columns < datetime.time(9, 0))]
print (df_slice)
08:45:00
2017-09-18 463.0
2017-09-19 476.0
2017-09-20 988.0
感谢 @Zero
简化回答:
df.loc[:, (df.columns > '08:30:00') & (df.columns < '09:00:00')]
关于python - 如何根据列名属性对 Pandas 数据框进行切片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46427874/