Python 创建GroupBy并将唯一值的计数添加为新列 问题

Python 创建GroupBy并将唯一值的计数添加为新列 问题,python,pandas,group-by,pandas-groupby,Python,Pandas,Group By,Pandas Groupby,我试图按列day和source对Pandas数据帧进行分组,然后为每个组计算第三个(时间戳)的唯一实例(以找出每个源每天的点击次数),但我得到了这个错误(下面是完整的回溯): TypeError:“方法”对象不可下标 尝试 我的代码是: df['timestamp_count'] = df.groupby(["source", "day"]).agg({"timestamp": "nunique"}) 理想情况下,

我试图按列
day
source
对Pandas数据帧进行分组,然后为每个组计算第三个(
时间戳
)的唯一实例(以找出每个源每天的点击次数),但我得到了这个错误(下面是完整的回溯):
TypeError:“方法”对象不可下标

尝试 我的代码是:

df['timestamp_count'] = df.groupby(["source", "day"]).agg({"timestamp": "nunique"})
理想情况下,我希望得到这样的结果(包括新列,
timestamp\u count

day    source    timestamp                timestamp_count
1      facebook  2018-08-04 11:16:32.416  2
1      facebook  2019-01-03 10:25:38.216  2
1      twitter   2018-10-14 13:26:22.123  1
2      facebook  2019-01-30 12:16:32.416  1
当我运行
df.descripe()
时,我看到
source
是一个对象,而
day
是一个整数。这可能是问题的一部分吗?在研究了其他问题之后,似乎很可能是沿着这些思路,但它们似乎都没有抛出相同的输入/错误组合

有人能帮助Python新手吗?非常感谢

回溯
---------------------------------------------------------------------------
TypeError回溯(最近一次调用上次)
在里面
---->1 df['timestamp_count']=(df.groupby[“源”,
“day”]).agg({“timestamp”:“nunique”})
TypeError:“方法”对象不可下标

使用
transform
播放结果:

df['timestamp_count'] = (
    df.groupby(["source", "day"])['timestamp'].transform('nunique'))
df

   day    source                timestamp  timestamp_count
0    1  facebook  2018-08-04 11:16:32.416                2
1    1  facebook  2019-01-03 10:25:38.216                2
2    1   twitter  2018-10-14 13:26:22.123                1
3    2  facebook  2019-01-30 12:16:32.416                1

请提供完整的回溯(还包括导致错误的行)。谢谢。谢谢@coldspeed,我已经这样做了。它是
df.groupby([“source”,“day”])
,而不是
(df.groupby[“day”,“source”])
。你修复了帖子中的打字错误,但没有意识到它在你的代码中。好问题!现在修复。@coldspeedThank你!我将新的timestamp\u count列作为datetime对象,有没有将其转换为整数的技巧?@FPL
df.groupby([“source”,“day”])[“timestamp”]。transform('nunique'))
返回一列整数。请再次检查。我已经检查并再次运行了所有内容,但仍然得到了datetimes:-((df.info()返回“timestamp\u count 143375 non-null datetime64[ns]”)@FPL如果您执行
df['timestamp\u count']=df.groupby([“source”,“day”])[“timestamp”]。transform('nunique')。astype(int)
?你能为我打印
df['timestamp\u count'].head().tolist()
吗?行了!非常感谢你的帮助!我不知道该在哪里添加函数…这一切还是新鲜事。
df['timestamp_count'] = (
    df.groupby(["source", "day"])['timestamp'].transform('nunique'))
df

   day    source                timestamp  timestamp_count
0    1  facebook  2018-08-04 11:16:32.416                2
1    1  facebook  2019-01-03 10:25:38.216                2
2    1   twitter  2018-10-14 13:26:22.123                1
3    2  facebook  2019-01-30 12:16:32.416                1