【问题标题】:Sort a dataframe by month and date, but excluding the year按月和日期对数据框进行排序,但不包括年份
【发布时间】:2019-12-21 07:28:05
【问题描述】:

我正在处理一个包含多年数据的数据帧,每个值都有一个时间戳。我正在为夏季/非夏季月份的数据排序而苦苦挣扎。我不确定如何告诉 pandas 获取日期为 6 月 1 日至 9 月 30 日的数据,但会丢弃年份。我在下面创建了一个我想要实现的伪代码,但显然时间戳不适用于这种情况。感谢您的帮助,对于我的表述不够清晰,我深表歉意。

代码如下: 代码也在上面作为图像:

# My goal is to get summer months June 1 to September 30
# I have a multiple years I only want extract the summer months from each year
summer_start = pd.Timestamp(month=6, day=1) # I recognize this will not work without a year. This is pseudo-code
summer_end = pd.Timestamp(month=9, day=30) 
df['Is_Summer'] = df['Date'].apply(lambda x: 'True' if x >= summer_start && x <= summer_end else 'False')

【问题讨论】:

  • 如果您需要确切的夏季日期,我会创建两列类似 datetime.datetime.date((pd.Timestamp(month=9, day=30, year=2019))).month和 .day 并在它们之间进行检查

标签: python pandas


【解决方案1】:

对于你的情况,它只是介于 6 和 9 之间的月份,所以你可以这样做

 df['is_summer'] = df['Date'].dt.month.between(6,9)

【讨论】:

  • 非常感谢。就一个问题。如果我也想包含日期怎么办?比如 6 月 15 日到 9 月 15 日。
  • 我不能在8分钟内检查标记,但我会在可以的时候。
  • 对于另一个问题,在 615 和 915 之间执行类似月份 * 100 + 天的操作。
猜你喜欢
  • 2020-04-13
  • 1970-01-01
  • 2019-10-07
  • 2021-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-26
  • 1970-01-01
相关资源
最近更新 更多