【问题标题】:Merge similar hours from Date Column into one将日期列中的相似时间合并为一个
【发布时间】:2019-06-24 07:00:48
【问题描述】:

我有一个看起来像这样的数据框。

   Date                   MW
0 2017-01-01 09:00:00      1
1 2017-01-01 09:00:00      1
2 2017-01-01 09:00:00      1
3 2017-01-01 10:00:00      1
4 2017-01-01 10:00:00      1

我想将所有重复小时的值相加并将其转换为单行。例如,对于 09:00:00,最终值应为 3 MW。

我尝试了 groupby,但它显示的小时数缺失值不在数据集中。此外, df.resample('H').sum() 给出了奇怪的结果。

感谢您的帮助。

【问题讨论】:

  • 我无法复制,因为当我复制 df.groupby('Date').sum() 时,它对我来说很好
  • Can you show us what the weird results look like?。同时发布您收到的确切错误消息
  • 这就是它所提供的。日期 MW 0 2017-01-01 09:00:00 111 1 2017-01-01 10:00:00 11222237 2 2017-01-01 11:00:00 111314161119 3 2017-01-01 12:00:05 1316201322 4 2017-01-01 13:00:00 1923242120

标签: python pandas pandas-groupby


【解决方案1】:

为什么在分组时不将日期时间视为字符串?

df = pd.DataFrame({'Date':['2017-01-01 09:00:00','2017-01-01 09:00:00','2017-01-01 10:00:00','2017-01-01 10:00:00'],
              'MW':[1,2,1,1]})
df['Date'] = pd.to_datetime(df1['Date'])
df.groupby('Date', as_index=False).sum()

输出:

                  Date  MW
0  2017-01-01 09:00:00   3
1  2017-01-01 10:00:00   2

【讨论】:

  • 当我尝试这样做时,它给了我 0 2017-01-01 09:00:00 111 1 2017-01-01 10:00:00 11222237 2 2017-01-01 11: 00:00 111314161119 3 2017-01-01 12:00:00 1316201318152322 4 2017-01-01 13:00:00 1923242120
  • 更正了错误。我的 MW 列有 dtype 作为对象。将其转换为 int 并应用 groupby
  • df.dtypes 你应该看到 Date 列是 Object,MW 是 int
  • date_rng = pd.date_range(start='1/1/2017', end='1/2/2017', freq='H') df = pd.DataFrame(date_rng, columns= ['date']) df['MW'] = 0 试试这个
  • 你应该得到正确的输出。我不知道你在做什么,但试试上面的评论。您应该跨数据帧维护数据类型
猜你喜欢
  • 2015-12-23
  • 1970-01-01
  • 2013-11-29
  • 1970-01-01
  • 2021-12-16
  • 2013-07-29
  • 1970-01-01
  • 1970-01-01
  • 2016-02-18
相关资源
最近更新 更多