如何统计df2中Data_Value超过df1对应日期值的天数并输出结果?
解决思路与代码实现
这是一个典型的Pandas分组聚合、合并筛选任务,我来一步步帮你实现需求:
步骤1:统一日期列名
首先我们需要把两个DataFrame的日期列名称对齐,方便后续合并操作:
import pandas as pd # 假设你已经加载了df1和df2 # 统一日期列名称为Date(df1已有该列名,只需调整df2) df2 = df2.rename(columns={'mnth_day': 'Date'})
步骤2:计算df2中每个日期的最大Data_Value
因为df2存在同一日期多条记录的情况,我们先按日期分组,提取每个日期的最大Data_Value:
# 分组计算每日最大值,并重置索引变回DataFrame格式 df2_daily_max = df2.groupby('Date')['Data_Value'].max().reset_index()
步骤3:合并两个DataFrame并筛选符合条件的记录
将处理后的df2和df1按日期合并,然后筛选出df2最大值超过df1对应日期值的记录:
# 合并df1和df2的每日最大值,保留双方都存在的日期 merged_df = pd.merge(df1, df2_daily_max, on='Date', suffixes=('_df1', '_df2_max')) # 筛选df2最大值大于df1对应值的行 result_df = merged_df[merged_df['Data_Value_df2_max'] > merged_df['Data_Value_df1']]
步骤4:整理输出格式并统计天数
最后调整结果的列名,同时统计符合条件的天数:
# 调整列名,只保留需要的两列 result_df = result_df[['Date', 'Data_Value_df2_max']].rename(columns={'Data_Value_df2_max': 'Data_Value'}) # 统计符合条件的天数 qualified_days_count = len(result_df) print(f"Data_Value超过df1对应日期值的天数:{qualified_days_count}") # 输出最终结果 print(result_df)
示例输出说明
运行上述代码后,result_df会以你期望的格式输出(示例如下,具体结果取决于你的实际数据):
Date Data_Value
0 02-25 28.9
1 10-07 30.0
...
内容的提问来源于stack exchange,提问作者Rashida
相关产品推荐
相关产品推荐

