datetime - Pandas:分组并使用日期时间进行转换

标签 datetime pandas group-by transform

我仍然是 Pandas 的初学者,当我在多列(包括 dtype datetime64[ns] 列)上使用 groupby-transform 操作时,偶然发现了一个非常奇怪的行为。

我的(玩具)示例是:

import pandas as pd
df = pd.DataFrame({'date': [pd.datetime(2014,3,17),    pd.datetime(2014,3,24), pd.datetime(2014,3,17)], 'hdg_id': [4041,4041,4041],'stock': [1.0,1.0,1.0]})

In[117]: df
Out[117]: 
    date  hdg_id  stock
0 2014-03-17    4041      1
1 2014-03-24    4041      1
2 2014-03-17    4041      1

我现在对日期和 hdg_id 进行分组(对于 hdg_id 来说是微不足道的,因为只有一个唯一值,但我需要多个分组来产生结果,我的实际应用当然更复杂):
In[118]: df.groupby(['date', 'hdg_id']).transform(sum)
Out[118]: 
           stock
0   0.000000e+00
1  4.940656e-324
2   0.000000e+00

这不是我预期的结果。如果我将列日期转换为字符串类型,我会得到我所期望的:
In[129]: df['date']=df['date'].astype(str)
In[131]: df.groupby(['date', 'hdg_id']).transform(sum)
Out[131]: 
   stock
0      2
1      1
2      2

任何人都可以分享一些内部发生的事情吗?

非常感谢!

最佳答案

有理由使用 .transform(sum) 吗?

你可以这样做:
df.groupby(['date', 'hdg_id']).sum()
enter image description here

关于datetime - Pandas:分组并使用日期时间进行转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31968021/

相关文章:

python - 仅针对特定列中的某些条件值,使用之前的值填充每组每小时缺失的日期

python - Groupby 类和计数特征中的缺失值

sql查询-分组然后加入

mysql - 按组总和标准排序

python - 带有时区感知索引的 pandas to_Datetime 转换

c# - 如何设置 DateTime 小时、分钟和秒?

datetime - Java日期在单个类中处理: store date,时间和时区

java - 如何在android中获取月份和日期?

python - Pandas/Numpy 查找列标题和索引标题之间差异的方法

python - 如何在 python 中将一列整数转换为标准小时时间?