猫收容所有很多猫住在那里。经常进入收容所的流浪猫会得到一个装有射频标签的项圈。然而,有时并不是所有的猫都每天进入猫收容所。
在避难所的门上有一个传感器,当猫进入时,它可以检测到一个装有射频标签的项圈。因此,一只猫每天进出收容所都能被检测到好几次。这是传感器数据(简化(。
data = {'Date': ['01-09-2022', '01-09-2022', '01-09-2022', '01-09-2022', '02-09-2022', '02-09-2022', '02-09-2022', '02-09-2022', '03-09-2022', '03-09-2022', '03-09-2022', '03-09-2022', '03-09-2022'],
'Name': ['A', 'A', 'A', 'A', 'B', 'C', 'C', 'B', 'D', 'C', 'C', 'D', 'A']}
df = pd.DataFrame(data)
df
像这样的数据
Date Name
0 01-09-2022 A
1 01-09-2022 A
2 01-09-2022 A
3 01-09-2022 A
4 02-09-2022 B
5 02-09-2022 C
6 02-09-2022 C
7 02-09-2022 B
8 03-09-2022 D
9 03-09-2022 C
10 03-09-2022 C
11 03-09-2022 D
12 03-09-2022 A
问题是,我怎么知道一只名叫"A";每三天来一次收容所?(尽管名为"A"的猫每天出现几次,但它仍然算作一只(。
您可以使用.groupby((来查看一只猫一天中有多少次,以及它进入了多少不同的日子。
print(ans.groupby(["Name", "Date"])["Date"].count())
你会得到这样的输出:
Name Date
A 01-09-2022 4
03-09-2022 1
B 02-09-2022 2
C 02-09-2022 2
03-09-2022 2
D 03-09-2022 2
Name: Date, dtype: int64
然后,保存这个并检查在不同日期进入的猫。
df_count = ans.groupby(["Name", "Date"]).agg({"Date": "count"})
print(df_count.groupby("Name").count())
我想,这就是你问题的答案。
Date
Name
A 2
B 1
C 2
D 1
您想要的输出是什么?
做df[df['Name']=='A'].drop_duplicates()
,你知道猫"A"在收容所里呆了多少天