'SeriesGroupBy' 对象没有属性 'is_unique'
'SeriesGroupBy' object has no attribute 'is_unique'
- 操作系统:Windows10
- python: 3.7.11
- IDE:jupyter 笔记本
我有一个包含以下列四列的数据集:bug_report_number
、class_id
、time_stamp
、label
。数据集如下所示:
41737 120098 1583149803 0
41737 120116 1583149803 0
41737 120136 1583149803 0
41748 120179 1583135020 0
41748 120177 1583135020 -1
41748 120177 1583135020 -1
41754 120177 1583135020 1
41754 120200 1583135020 0
41754 120188 1583135020 0
我想按 bug_report_number
分组,然后检查 class_id
列值对于该错误报告是否唯一。
例如,对于 41748
bug_report_number 我希望得到 False
,对于 41754
我希望得到 True
.
我写的代码如下:
import pandas as pd
train_file_path = "dataset_hbase - v.03.csv"
columns_name = ["bug_report_number", "class_id", "time_stamp", "label"]
columns_dtype = {0: "int64", 1: "int64", 2: "int64", 3:"int64"}
df = pd.read_csv(train_file_path, header=None, names=columns_name, dtype=columns_dtype)
temp = df.groupby(["bug_report_number"])
temp["class_id"].is_unique
但是当我使用 .is_unique
它时 returns 出现以下错误:
AttributeError: 'SeriesGroupBy' object has no attribute 'is_unique'
问题:
- 如何对
bug_report_number
进行分组,然后检查 class_id
列值对于该错误报告是否唯一?
IIUC,你可以使用groupby
+ nunique
+ eq(1)
。这个想法是计算每个“bug_report_number”和return的唯一“class_id”的数量,如果它等于 1,则为真否则为假。
s = df.groupby('bug_report_number')['class_id'].nunique()
out = s.eq(1)
输出:
bug_report_number
41737 False
41748 False
41754 False
Name: class_id, dtype: bool
使用:
data = pd.DataFrame({'bug_report_number': [1,2,1,2,1], 'id': [50,35,50,30,50]})
df = pd.DataFrame(data)
df.groupby('bug_report_number')['id'].apply(lambda x: 0 if len(list(x))==len(set(x)) else 1)
输出:
- 操作系统:Windows10
- python: 3.7.11
- IDE:jupyter 笔记本
我有一个包含以下列四列的数据集:bug_report_number
、class_id
、time_stamp
、label
。数据集如下所示:
41737 120098 1583149803 0
41737 120116 1583149803 0
41737 120136 1583149803 0
41748 120179 1583135020 0
41748 120177 1583135020 -1
41748 120177 1583135020 -1
41754 120177 1583135020 1
41754 120200 1583135020 0
41754 120188 1583135020 0
我想按 bug_report_number
分组,然后检查 class_id
列值对于该错误报告是否唯一。
例如,对于 41748
bug_report_number 我希望得到 False
,对于 41754
我希望得到 True
.
我写的代码如下:
import pandas as pd
train_file_path = "dataset_hbase - v.03.csv"
columns_name = ["bug_report_number", "class_id", "time_stamp", "label"]
columns_dtype = {0: "int64", 1: "int64", 2: "int64", 3:"int64"}
df = pd.read_csv(train_file_path, header=None, names=columns_name, dtype=columns_dtype)
temp = df.groupby(["bug_report_number"])
temp["class_id"].is_unique
但是当我使用 .is_unique
它时 returns 出现以下错误:
AttributeError: 'SeriesGroupBy' object has no attribute 'is_unique'
问题:
- 如何对
bug_report_number
进行分组,然后检查class_id
列值对于该错误报告是否唯一?
IIUC,你可以使用groupby
+ nunique
+ eq(1)
。这个想法是计算每个“bug_report_number”和return的唯一“class_id”的数量,如果它等于 1,则为真否则为假。
s = df.groupby('bug_report_number')['class_id'].nunique()
out = s.eq(1)
输出:
bug_report_number
41737 False
41748 False
41754 False
Name: class_id, dtype: bool
使用:
data = pd.DataFrame({'bug_report_number': [1,2,1,2,1], 'id': [50,35,50,30,50]})
df = pd.DataFrame(data)
df.groupby('bug_report_number')['id'].apply(lambda x: 0 if len(list(x))==len(set(x)) else 1)
输出: