如何移除Pandas Series中的周末对应数值?
移除Pandas时间序列中的周末数据
问题描述
我拥有一组每日数值,希望移除周末(周六+周日)时段及其对应的数值,请问该如何操作?感谢解答。
用户提供的初始化代码:
df=pd.read_excel(input_file, sheet_name='daily', usecols='A:D', na_values='ND', index_col=0, header=0) df.index.names = ['Period'] df.index = pd.to_datetime(df.index) q= pd.Series(df['Values'], index=df.index)
示例数据:
| Period | Values |
|---|---|
| 20-Jan-89 | 3 |
| 27-Jan-89 | 4 |
| 3-Feb-89 | 2 |
| 10-Feb-89 | 5 |
| 17-Feb-89 | 3 |
| 24-Feb-89 | 5 |
| 3-Mar-89 | 5 |
| 10-Mar-89 | 6 |
| 17-Mar-89 | 4 |
| 24-Mar-89 | 5 |
| 31-Mar-89 | 7 |
| 7-Apr-89 | 6 |
| 14-Apr-89 | 6 |
| 21-Apr-89 | 4 |
| 28-Apr-89 | 7 |
| 5-May-89 | 5 |
| 12-May-89 | 6 |
| 19-May-89 | 5 |
| 26-May-89 | 7 |
| 2-Jun-89 | 7 |
解决方案
Pandas的DatetimeIndex自带dayofweek(或weekday)属性,可直接用来筛选工作日数据:
dayofweek返回0(周一)到6(周日)的整数,其中5=周六,6=周日
方法1:筛选DataFrame的工作日数据
直接通过索引的dayofweek属性过滤:
# 保留周一到周五的数据,自动移除周末 df_weekday = df[df.index.dayofweek < 5]
方法2:筛选Series的工作日数据
针对你定义的Series q,操作逻辑完全一致:
q_weekday = q[q.index.dayofweek < 5]
可选:查看被移除的周末数据
如果需要确认哪些数据是周末,可以反向筛选:
weekend_data = df[df.index.dayofweek >= 5]
补充说明
weekday属性和dayofweek功能完全相同,也可以替换使用:
df_weekday = df[df.index.weekday < 5]
内容的提问来源于stack exchange,提问作者123456
相关产品推荐
相关产品推荐

