此问题已在此处有答案:
Python Find duplicates across multiple columns(1个答案)
16小时前关闭
我有下面的Pandasdateframe。
import pandas as pd
data= [['A','Sensor1','1/12/2023 2:00:00 AM'],['A','Sensor2','1/12/2023 2:00:00 AM'],['A','Sensor7','1/12/2023 2:00:00 AM'],['A','Sensor3','1/12/2023 2:00:00 AM'],['A','Sensor1', '2/12/2023 12:00:00 PM'],['A','Sensor2','2/12/2023 12:00:00 PM'],['A','Sensor7','2/12/2023 12:00:00 PM'],['A','Sensor4','3/12/2023 3:00:00 AM'],['B','Sensor7','2/12/2023 5:00:00 AM'],['B','Sensor8','2/12/2023 5:00:00 AM'],['B','Sensor2','2/12/2023 5:00:00 AM'],['B','Sensor5','4/12/2023 4:00:00 AM'],['B','Sensor7','6/12/2023 5:00:00 AM'],['B','Sensor8','6/12/2023 5:00:00 AM'],['B','Sensor3','6/12/2023 5:00:00 AM'],['C','Sensor1','6/12/2023 5:00:00 AM'],['C','Sensor2','7/12/2023 5:00:00 AM']]
df = pd.DataFrame(data,columns =['System','Sensor','SensorTime'])
我想获得具有相同传感器同时跳闸的系统行。即,系统A具有三个传感器1、2和7,它们在给定月份的同一时间跳闸。系统B的传感器7和8在给定月份的同一时间跳闸。
预期输出为-
| 系统|传感器|传感器时间|
| --------------|--------------|--------------|
| 一个|传感器1|2023年1月12日上午2:00:00|
| 一个|传感器2|2023年1月12日2:00:00 AM|
| 一个|传感器7|2023年1月12日2:00:00 AM|
| 一个|传感器1|2023年2月12日12:00:00 PM|
| 一个|传感器2|2023年2月12日12:00:00 PM|
| 一个|传感器7|2023年2月12日12:00:00 PM|
| B|传感器7|2023年2月12日上午5:00:00|
| B|传感器8|2023年2月12日5:00:00 AM|
| B|传感器7|2023年6月12日上午5:00:00|
| B|传感器8|2023年6月12日上午5:00:00|
目前,我对每个系统groupby进行迭代(iterrows),并获取列表列表中加载的所有传感器和时间,然后对每个系统进行比较和过滤。请咨询是否有更好的方法来执行。
4条答案
按热度按时间jjhzyzn01#
您可以删除
System
和Sensor
列中的未重复的行lb3vh1jj2#
使用
groupby().size
来计算(System, SensorTime)
对的数量,还使用transform
将大小传播到每行:输出(注意第一组在样本数据中有两个空格``):
egmofgnx3#
Groupby子句可用于System和SensorTime列。
mlnl4t2r4#