python - 具有唯一 groupby 的新列在数据框中产生
问题描述
我有一个带有重复行('id')的数据框。
我想汇总数据,但首先需要对每个 id 的唯一会话求和。
id session
123 X
123 X
123 Y
123 Z
234 T
234 T
此代码运行良好,但当我想将此新列“ncount”添加到我的数据框时却不行。
df['ncount'] = df.groupby('id')['session'].nunique().reset_index()
我尝试使用转换,但它没有用。
df['ncount'] = df.groupby('id')['session'].transform('nunique')
这是转换代码的结果(我的数据作为重复 id):
id session ncount
123 X 1
123 X 1
123 Y 1
123 Z 1
234 T 1
234 T 1
这是我感兴趣的结果:
id session ncount
123 X 3
123 X 3
123 Y 3
123 Z 3
234 T 1
234 T 1
解决方案
使用以下步骤:
1.分组数据并存储在单独的变量中。
2.然后合并回原始数据框。
代码:
import pandas as pd
df = pd.DataFrame({"id":[123,123,123,123,234,234],"session":["X","X","Y","Z","T","T"]})
x = df.groupby(["id"])['session'].nunique().reset_index()
res = pd.merge(df,x,how="left",on="id")
print(res)
如果需要,您可以重命名列名。
推荐阅读
- python - Firefox WebDriver/GeckoDriver/Marionette ElementClick 慢
- python - 如何播放一首歌曲直到它完成然后重复而不影响我的程序的其余部分?
- pivot-table - 如何将数据透视图 xvalues 设置为数据字段值
- cassandra - Cassandra - 如何按最新时间戳分组
- python - Pytelegrambotapi 引发 ReadTimeout 错误
- c# - 如何让 WPF 图像控件从 WriteableBitmap 线性解释颜色通道?
- django - 为什么没有注册使用自定义 javascript 所做的更改
- html - 嵌套可点击元素的明智方法
- android - 使用 kotlin 创建 Firestore 数据库模型
- python - 有什么方法可以使用像 ModelMultipleChoiceField 这样的 ajax-select AutoCompleteSelectMultipleField 模型