You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Pandas按月份分组计算分位数后拆分DataFrame的方法

拆分原DataFrame的具体步骤

嘿,作为Python和Pandas新手,你已经成功按月份算出了气温的中位数(0.5分位数),这一步做得很棒!接下来要把原DataFrame拆分成两个的话,咱们可以通过给原数据添加对应月份的中位数列,再用布尔索引筛选的方式来实现,具体操作如下:

1. 把计算好的分位数关联到原DataFrame里

你已经得到了每个月的中位数系列sQ,现在需要把这些值匹配到原数据的每一行中。最简单的方法是用map()函数,根据Month列的值去sQ里调取对应的中位数,添加成新列:

import pandas as pd

# 读取原数据(你的原有代码)
input_file = pd.read_csv("DailyMax_lat-14_lon35.csv")
# 计算各月中位数(你的原有代码)
sQ = input_file.groupby(['Month']).quantile(0.5)['TmaxScaled']

# 给原数据添加对应月份的中位数列
input_file['month_median'] = input_file['Month'].map(sQ)

2. 按中位数拆分出两个DataFrame

现在原数据里多了一列month_median,记录了每行数据对应月份的中位数,接下来就可以用布尔条件筛选出两个DataFrame了:

# 第一个DataFrame:气温值大于等于对应月份中位数的记录
df_above_equal_median = input_file[input_file['TmaxScaled'] >= input_file['month_median']]

# 第二个DataFrame:气温值小于对应月份中位数的记录
df_below_median = input_file[input_file['TmaxScaled'] < input_file['month_median']]

验证拆分结果

你可以通过打印两个DataFrame的行数,或者随机查看几行数据来验证拆分是否正确:

print(f"原数据总行数:{len(input_file)}")
print(f"中位数及以上的行数:{len(df_above_equal_median)}")
print(f"中位数以下的行数:{len(df_below_median)}")

正常情况下,后两个数的和应该等于原数据的总行数哦。

内容的提问来源于stack exchange,提问作者Darkwilmore

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:27:44