有没有一种方法可以使用Python检查某个值是否每周出现一次?

时间:2020-06-16 11:43:43

标签: python sql excel database relational-division

我有一个数据集,其中包含城市列表以及每周一周的游客人数。我想进行一次完整性检查,看看一个星期是否出现一个城市。

该图像显示了数据集的外观快照,但实际的数据集已接近1563个城市:

[image[1]

我想检查一下说哈拉雷在整个星期内是否出现一致,而其他所有城市(其中有1562个城市)都一样。

3 个答案:

答案 0 :(得分:2)

假设每个城市在给定日期只能出现一次,一种选择是使用关系划分技术:

select city
from mytable
group by city
having count(*) = (select count(distinct week) from mytable)

这将为您显示所有日期显示的所有城市。

如果给定城市在给定日期可能出现多次,那么我们可以认真更改having子句:

having count(distinct week) = (select count(distinct week) from mytable)

答案 1 :(得分:1)

假定它存储在熊猫的数据框(名为df)中:

no_of_weeks = len(set(df['Week']))
check = pd.DataFrame(df.groupby('City').Week.apply(lambda x: x.count() == no_of_weeks))
always_recorded = pd.DataFrame({'City': check.index.values, 'always_recorded': check['Week']})
always_recorded.index = [*range(1, len(always_recorded)+1)]
df2 = pd.merge(df, always_recorded, how = "left", on = "City")
subset = df2[df2.always_recorded == True]

答案 2 :(得分:0)

一种可能的解决方案是计算每个城市的星期数,并将其与当前星期数进行匹配。

在SQL中,您可以执行

之类的操作
select 
   city, 
   count(week) over (partition by city) as appearance_num
from table_name