【问题标题】:How to loop dataframe by year in pandas如何在熊猫中按年循环数据帧
【发布时间】:2022-01-25 00:08:12
【问题描述】:

我想按年循环数据帧。 例如我的 df 是 2006-7-1 到 2021 长度和 8 列(A-H 列),索引是数据时间。
在这个时候,
df['A']['2006'] 这样,

date
2006-07-01 00:00:00    1
2006-07-01 00:05:00    2
2006-07-01 00:10:00    3
2006-07-01 00:15:00    4

df['A']['2006'] 是我想要的答案之一,但是 df['A']['2007'],df['A']['2008']..., df['A']['2021'] 都是。

但我不知道如何逐年循环 2006-2021,因为我们不能写 df['A']['i']。
所以,请把你的知识借给我。

【问题讨论】:

  • 你想按年过滤你的数据框吗?
  • 我想要 df['A']['2006'],df['A']['2007'],df['A']['2008']... 但是在这个时候,我不能使用循环,因为 df['A']['i'] 表示 str i。
  • 我添加了答案。

标签: python pandas dataframe time-series


【解决方案1】:

您可以简单地在数据框中创建一列,然后按如下方式循环遍历它

df['year'] = pd.DatetimeIndex(df['date']).year

否则,您可以尝试拆分字符串,然后提取年份。

【讨论】:

    【解决方案2】:

    您可以为Year 创建一个列:

    df['Year'] = pd.DataFrame([i.year for i in df['Date']])
    

    然后使用该列过滤您的数据框:

    df['A'][df['Year'] == 2007]
    

    这将为您提供年份等于 2007 的所有行。

    【讨论】:

    • 是的,但现在时间索引是日期时间,所以我不能添加年份列。
    • 我不明白你的意思。如果是datetime 格式,则可以使用.year 提取日期时间的年份。
    • 感谢您的回答。抱歉,我不知道如何应用到索引。现在,我使用 df.index.year 并解决了。
    猜你喜欢
    • 2018-02-11
    • 1970-01-01
    • 2019-07-29
    • 2020-04-10
    • 2017-10-29
    • 1970-01-01
    • 1970-01-01
    • 2021-12-22
    • 2018-01-22
    相关资源
    最近更新 更多