【问题标题】:How do I delete a specific year from df如何从 df 中删除特定年份
【发布时间】:2019-05-16 16:18:08
【问题描述】:

df.head()

          HEAT/HOT WATER
created_date    
2015-12-31  169457.0
2016-12-31  155578.0
2017-12-31  152009.0
2018-12-31  153277.0
2019-12-31  76712.0

我想从索引中删除 2019

我试过了,没有成功。

df = df[df['created_date'] != '2019']

【问题讨论】:

  • df = df[df['created_date'].year != 2019].copy()
  • @WeNYoBen 我不关注?为什么复印有助于作业?
  • @roganjosh 检查stackoverflow.com/questions/20625582/…,防止SettingWithCopyWarning
  • 很清楚这个答案。我只是不确定您是如何从问题中得出.copy() 结论的
  • @ChristianTorres 这只是我的编码行为,每个人都有自己的编码风格,就像我总是做 df.loc[1,:] 而不是 df.loc[1]

标签: python pandas dataframe time grouping


【解决方案1】:

index 转换为系列,以便它可以支持矢量化datetime 操作并使用Series.ne 检查哪些年份不是2019

# df.index = pd.to_datetime(df.index)
df[df.index.to_series().dt.year.ne(2019)]

               HEAT/HOTWATER
2015-12-31       169457.0
2016-12-31       155578.0
2017-12-31       152009.0
2018-12-31       153277.0

或者只是df[df.index.year != 2019],因为索引已经是DatetimeIndex,正如@piRSquared 在cmets 中指出的那样

【讨论】:

  • 谢谢!这对我有用。如果它是列而不是索引,代码会是什么?
  • 这就够了df[df.index.year != 2019]
  • @ChristianTorres df[df['created_date'].dt.year.ne(2019)]
  • @ChristianTorres df[df['created_date'].year.isin([2019,2010])]
  • 感谢@piRSquared,当然是DatetimeIndex
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-14
  • 1970-01-01
  • 2019-01-24
  • 1970-01-01
  • 1970-01-01
  • 2022-11-26
  • 1970-01-01
相关资源
最近更新 更多