我有一个数据集,其中包含城市列表以及每周一周的游客人数。我想进行一次完整性检查,看看一个星期是否出现一个城市。
该图像显示了数据集的外观快照,但实际的数据集已接近1563个城市:
[
我想检查一下说哈拉雷在整个星期内是否出现一致,而其他所有城市(其中有1562个城市)都一样。
答案 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