如何遍历DataFrame日期提取每日12:00对应的High值?
提取每日12:00对应的High值
需求
从目标DataFrame中筛选出每日12:00:00.0时间点的记录,保留Date、Time和High列,生成新的DataFrame。
原DataFrame数据
Date Time Open High Low Last 0 5/6/2019 09:30:00.0 2872 2888.5 2868 2888.25 1 5/6/2019 10:00:00.0 2888.25 2893 2883.5 2889.5 2 5/6/2019 10:30:00.0 2889.5 2895.25 2887.75 2894.25 3 5/6/2019 11:00:00.0 2894 2898.25 2891.25 2898 4 5/6/2019 11:30:00.0 2898 2898.5 2891.5 2892.25 5 5/6/2019 12:00:00.0 2892.75 2893.5 2890.25 2891 6 5/6/2019 12:30:00.0 2891 2894.5 2890.5 2890.5 7 5/6/2019 13:00:00.0 2890.25 2895.75 2888.75 2895.25 8 5/6/2019 13:30:00.0 2895.5 2896.5 2894.25 2896.25 9 5/6/2019 14:00:00.0 2896.25 2899.75 2894.75 2899 10 5/6/2019 14:30:00.0 2899 2909.75 2899 2909.5 11 5/6/2019 15:00:00.0 2909.25 2911.5 2906.75 2909.25 12 5/6/2019 15:30:00.0 2909.75 2912 2906 2907.75 13 5/7/2019 09:30:00.0 2879.75 2886.75 2869.5 2876.5 14 5/7/2019 10:00:00.0 2876.5 2876.5 2864.25 2874.75 15 5/7/2019 10:30:00.0 2874.5 2875.5 2861.25 2863.25 16 5/7/2019 11:00:00.0 2863.25 2868.25 2858 2865 17 5/7/2019 11:30:00.0 2865.25 2869 2856.5 2860 18 5/7/2019 12:00:00.0 2859.75 2868.75 2855.5 2868 19 5/7/2019 12:30:00.0 2868 2869.5 2862.5 2862.5 20 5/7/2019 13:00:00.0 2862.5 2863.5 2847.75 2849.75 21 5/7/2019 13:30:00.0 2849.75 2855 2845.25 2850.75 22 5/7/2019 14:00:00.0 2850.75 2855 2845.25 2846 23 5/7/2019 14:30:00.0 2846 2851 2841 2848.75 24 5/7/2019 15:00:00.0 2848.5 2852.25 2843 2845 25 5/7/2019 15:30:00.0 2844.75 2860.75 2836.5 2859.25
解决方案
直接利用Pandas的布尔索引筛选符合条件的行,无需遍历,效率更高:
import pandas as pd # 假设原数据已加载到df变量中 # 筛选Time为12:00:00.0的行,保留指定列并重置索引 result_df = df[df['Time'] == '12:00:00.0'][['Date', 'Time', 'High']].reset_index(drop=True)
输出结果
Date Time High 0 5/6/2019 12:00:00.0 2893.5 1 5/7/2019 12:00:00.0 2868.75
内容的提问来源于stack exchange,提问作者NoLimitLondon
相关产品推荐
相关产品推荐

