Python-基于dataframe中的值验证事件

Python-基于dataframe中的值验证事件,python,pandas,numpy,Python,Pandas,Numpy,我有一个数据帧,我正试图根据数据帧中的其他值验证该数据帧的事件。 更具体地说,是关于UFO目击事件。我已经按照观察日期对df进行了分组,并删除了只有一个唯一条目的所有行。 下一步是检查日期是否相等,城市是否也相同 在这种情况下,我想删除所有行,因为城市是不同的 我想继续,因为比赛的时间和城市都是一样的 我正在为我的整个数据帧寻找这样做的方法。抱歉,如果这是个愚蠢的问题,我对编程很陌生 我不认为我理解你的问题,但我会发布这个答案,我们可以从那里开始工作 佐证列统计我们观察到相同日期时间和城市/

我有一个数据帧,我正试图根据数据帧中的其他值验证该数据帧的事件。 更具体地说,是关于UFO目击事件。我已经按照观察日期对df进行了分组,并删除了只有一个唯一条目的所有行。 下一步是检查日期是否相等,城市是否也相同

在这种情况下,我想删除所有行,因为城市是不同的

我想继续,因为比赛的时间和城市都是一样的


我正在为我的整个数据帧寻找这样做的方法。抱歉,如果这是个愚蠢的问题,我对编程很陌生

我不认为我理解你的问题,但我会发布这个答案,我们可以从那里开始工作

佐证
列统计我们观察到相同日期时间和城市/州组合的次数。在下面的例子中,12月20日发生了三次目击事件,其中两次是在普特维尔,另一次是在德卢斯。因此,每个事件的佐证列分别接收2和1的值

同样,尽管我们在波特维尔有四次观测,但其中两次发生在20日,另一次发生在21日。因此,我们将它们分为两个独立的事件

df = pd.DataFrame({'datetime': pd.to_datetime(['2016-12-20', '2016-12-20', '2016-12-20', '2016-12-21', '2016-12-21']), 
                   'city': ['duluth', 'portville', 'portville', 'portville', 'portville'], 
                   'state': ['mn', 'ny', 'ny', 'ny', 'ny']})

s = lambda x: x.shape[0]
df['corroborations'] = df.groupby(['datetime', 'city', 'state'])['city'].transform(s)

>>> df
    datetime        city state  corroborations
0 2016-12-20      duluth    mn               1
1 2016-12-20   portville    ny               2
2 2016-12-20   portville    ny               2
3 2016-12-21   portville    ny               2
4 2016-12-21   portville    ny               2

我不认为我理解你的问题,但我会发布这个答案,我们可以从那里开始工作

佐证
列统计我们观察到相同日期时间和城市/州组合的次数。在下面的例子中,12月20日发生了三次目击事件,其中两次是在普特维尔,另一次是在德卢斯。因此,每个事件的佐证列分别接收2和1的值

同样,尽管我们在波特维尔有四次观测,但其中两次发生在20日,另一次发生在21日。因此,我们将它们分为两个独立的事件

df = pd.DataFrame({'datetime': pd.to_datetime(['2016-12-20', '2016-12-20', '2016-12-20', '2016-12-21', '2016-12-21']), 
                   'city': ['duluth', 'portville', 'portville', 'portville', 'portville'], 
                   'state': ['mn', 'ny', 'ny', 'ny', 'ny']})

s = lambda x: x.shape[0]
df['corroborations'] = df.groupby(['datetime', 'city', 'state'])['city'].transform(s)

>>> df
    datetime        city state  corroborations
0 2016-12-20      duluth    mn               1
1 2016-12-20   portville    ny               2
2 2016-12-20   portville    ny               2
3 2016-12-21   portville    ny               2
4 2016-12-21   portville    ny               2

如果您只是想删除datetime、city和state组合的重复项,那么可以执行以下操作,即保留第一行中第一次出现的每个datetime、city和state组合

df[df.duplicated(subset=['datetime', 'city', 'state']) == False]

如果您只是想删除datetime、city和state组合的重复项,那么可以执行以下操作,即保留第一行中第一次出现的每个datetime、city和state组合

df[df.duplicated(subset=['datetime', 'city', 'state']) == False]


为什么不按日期和城市分组(可能还有州,以避免在不同的州混淆同名城市)?@3novak:我认为这没什么帮助。我需要一个df,它只包含在datetime列和city列中相等的条目。好的点虽然考虑状态…也许我不理解,但是<代码> df.GROPBY([日期时间','城市')< /> >产生一个GROUBY对象,其中包含DATEFAGE和DATE时间相同的数据框。你可以找到datetime和city的每个组合的行数,以确定报告是否得到证实。我明白你的意思,但在我的分组数据框中,我不知道city被分组了多少次。。如果我知道它是因为两个城市而被分组的,我会知道它是一个有效的入口,而不是发布数据的屏幕截图,最好生成一个问题示例,引导代表性数据,以便人们可以复制并粘贴到例如jupyter笔记本中,然后开始胡闹。为什么不按日期和城市分组(可能还有州,以避免在不同的州混淆同名城市)?@3novak:我认为这没什么帮助。我需要一个df,它只包含在datetime列和city列中相等的条目。好的点虽然考虑状态…也许我不理解,但是<代码> df.GROPBY([日期时间','城市')< /> >产生一个GROUBY对象,其中包含DATEFAGE和DATE时间相同的数据框。你可以找到datetime和city的每个组合的行数,以确定报告是否得到证实。我明白你的意思,但在我的分组数据框中,我不知道city被分组了多少次。。如果我知道它是因为两个城市而被分组的,我会知道它是一个有效的入口,而不是发布数据的屏幕截图,最好生成一个问题示例,引导代表性数据,以便人们可以复制并粘贴到例如jupyter笔记本中,然后开始胡闹。它给了我一个错误:ValueError:传递的项数错误0,位置意味着1我正在使用python 2.7这是我的错误。现在修好了。很高兴你把问题解决了。:)它给了我一个错误:ValueError:传递的项数错误0,位置意味着1我正在使用python 2.7这是我的错误。现在修好了。很高兴你把问题解决了。:)我实际上是在试图维护重复的条目,并删除单个条目。将其设置为true完成了任务,谢谢!好的,请确保您阅读了
复制的
上的文档。查看keep参数以获取所需内容>>>keep:{'first',last',False},默认值为'first'-
first
:将重复项标记为
True
,第一次出现除外。-<代码>最后一次
:将重复项标记为
,但最后一次出现除外。-False:将所有重复项标记为
True
。我实际上是在尝试维护重复项并删除单个条目。将其设置为true完成了任务,谢谢!好的,请确保您阅读了
复制的
上的文档。查看keep参数以获取所需内容>>>keep:{'first',last',False},默认值为'first'-
first
:将重复项标记为
True
,第一次出现除外。-<代码>最后一次
:将重复项标记为
,但最后一次出现除外。-False:将所有重复项标记为
True