簡體   English   中英

Python Pandas檢查一個值是否在同一天發生了一次以上

[英]Python Pandas check if a value occurs more then once in the same day

我有一個Pandas數據幀,如下所示。 我要做的是檢查一個站是否在同一天有變量yyy和任何其他變量(如在station1的情況下)。 如果這是真的,我需要刪除包含yyy的整行。

目前我正在使用iterrows()並循環搜索此變量出現的日期,將變量更改為“刪除我”,從此構建新數據幀(因為pandas不支持替換 )和過濾新數據幀以消除不需要的行。 這樣做現在因為我的數據幀很小,但不太可能擴展。

問題:這似乎是非常“非熊貓”的方法,是否有其他方法可以刪除不需要的變量?

                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 / station組合。

我們可以使用transform來廣播每個dateuse / station組合的大小,直到數據幀的長度,然后選擇長度> 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM