【发布时间】:2020-08-28 19:31:13
【问题描述】:
我有一组从 Excel 工作表中提取的数据。其中一列是日期,所以我使用df.to_datetime() 重新格式化数据。我的数据只有每个月的第一天,字符串格式是:
“20190101”
所以只有 12 个日期。
然后我使用 pd.pivot 将这一列日期设为列标签。 现在的计划是按季节对列进行子集化(例如,一月、二月、十二月是冬季)。我只有 2019 年的数据,但我将在未来几年使用此代码。我将参加去年 12 月,所以我需要忽略这些年份。
如何根据月份对列进行子集化。换句话说,我想将 DataFrame 划分为:
for column in full_df.iterrows()
If (column_label.datetime.month = 01 | column_label.datetime.month = 02 |column_label.datetime.month = 12):
winter_df[datetime.month] = full_df[column_label]
我知道 for 循环在 Dataframe 中不受欢迎,我知道我可以通过将其保留为字符串并输入特定字符串来对其进行硬编码,但数据不会每次都来自同一年,我会每年都要调整代码。
如何为列标签执行 if 语句? df.filter() 可能是个好主意,但我不知道日期时间对象是否可行。
附:如果我的问题形成得不好或者我不明白你的答案,请原谅我。对熊猫来说相当陌生。
更新:我希望根据月份将 DataFrame 分成三个,三个时间段如下: 冬季:1月、2月、12月 轻载:三月、四月、五月 夏季:六月、七月、八月、九月
【问题讨论】:
-
正如您所说的 12 月、1 月、2 月,我假设您想要北半球的季节?为什么不采用确切的日期而不是月份,因为冬季从 12 月 21 日开始?
-
这个问题好像有答案了:stackoverflow.com/questions/16139306/…
标签: python pandas dataframe python-datetime