Skip to main content
 首页 » 编程设计

python之如何根据列名属性对 Pandas 数据框进行切片

2025年05月04日21rubylouvre

我有一个数据框,其中列名是这样的数据时间对象:

            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')]