Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python将检查一个值是否在同一天出现一次以上_Python_Python 2.7_Pandas - Fatal编程技术网

Python将检查一个值是否在同一天出现一次以上

Python将检查一个值是否在同一天出现一次以上,python,python-2.7,pandas,Python,Python 2.7,Pandas,我有一个熊猫数据框,如下所示。我试图做的是检查一个站点是否在同一天有变量yyy和任何其他变量(如station1)。如果这是真的,我需要删除包含yyy的整行 目前,我正在使用iterrows()和循环来搜索该变量出现的日期,将该变量更改为类似“delete me”的内容,从中构建一个新的数据框(因为),并过滤新的数据框以除去不需要的行。因为我的数据帧很小,但不太可能扩展,所以现在可以这样做了 问题:这似乎是一种非常“非熊猫”的方法,是否有其他方法删除不需要的变量

我有一个熊猫数据框,如下所示。我试图做的是检查一个站点是否在同一天有变量
yyy
和任何其他变量(如
station1
)。如果这是真的,我需要删除包含
yyy
的整行

目前,我正在使用
iterrows()
和循环来搜索该变量出现的日期,将该变量更改为类似“delete me”的内容,从中构建一个新的数据框(因为),并过滤新的数据框以除去不需要的行。因为我的数据帧很小,但不太可能扩展,所以现在可以这样做了

问题:这似乎是一种非常“非熊猫”的方法,是否有其他方法删除不需要的变量

                dateuse         station         variable1
0   2012-08-12 00:00:00        station1               xxx
1   2012-08-12 00:00:00        station1               yyy
2   2012-08-23 00:00:00        station2               aaa
3   2012-08-23 00:00:00        station3               bbb
4   2012-08-25 00:00:00        station4               ccc
5   2012-08-25 00:00:00        station4               ccc
6   2012-08-25 00:00:00        station4               ccc

我可以使用布尔数组进行索引。我们想删除包含
yyy
和多个
dateuse
/
站组合的行(如果我理解您的目的的话!)

我们可以使用
transform
来广播每个
dateuse
/
站组合的大小,直到数据帧的长度,然后在组中选择长度大于1的行。然后我们可以
&
这与
yyy
的位置有关

>>> multiple = df.groupby(["dateuse", "station"])["variable1"].transform(len) > 1
>>> must_be_isolated = df["variable1"] == "yyy"
>>> df[~(multiple & must_be_isolated)]
               dateuse   station variable1
0  2012-08-12 00:00:00  station1       xxx
2  2012-08-23 00:00:00  station2       aaa
3  2012-08-23 00:00:00  station3       bbb
4  2012-08-25 00:00:00  station4       ccc
5  2012-08-25 00:00:00  station4       ccc
6  2012-08-25 00:00:00  station4       ccc

这是可行的,但我很确定为什么。。。尤其是
df[~(multiple&must\u isolated)]
做了什么?
print multiple
将显示它是一个布尔数组,只要行是
(dateuse,station
)组的成员且长度
>1
,它就是
真的
必须被隔离
只是一个数组,只要
variable1==“yyy”
时,该数组就是真的
multiple&must\u isolated
是一个booolean数组,它是
True
,每当我们想单独(这里是
yyy
)在一个包含多个成员的组中时,它都是
True
。这些是我们要删除的行
~(mul..&must..)
是它的否定,我们要保留的行
df[这里的一些布尔数组]
选择这些行。这有意义吗?