如何将熊猫中连续出现的``True''首次出现更改为false

时间:2018-07-02 01:29:42

标签: python pandas dataframe

我正在尝试根据行将DataFrame中True的第一个实例更改为False

              A       B      C  
   Number
   1          True   True   True   
   2          False  True   True  
   3          False  False  True   

              A       B      C  
   Number
   1          False  True   True   
   2          False  False  True  
   3          False  False  False   

每次尝试使用for index, row in target_df.iterrows():行时,当我翻阅该行时,它最终都找不到任何'True'。

谢谢!

1 个答案:

答案 0 :(得分:3)

您可以为每一行以及DataFrame.mask()使用布尔值的累积和(False对应于0; True等于1):

Indexes
   ON :TTL(ttl) ONLINE 
   ON :City(cityName) ONLINE  (for uniqueness constraint)
   ON :Region(region) ONLINE  (for uniqueness constraint)
   ON :Sector(sectorName) ONLINE  (for uniqueness constraint)

Constraints
   ON ( city:City ) ASSERT city.cityName IS UNIQUE
   ON ( region:Region ) ASSERT region.region IS UNIQUE
   ON ( sector:Sector ) ASSERT sector.sectorName IS UNIQUE
  

>>> condition = df.cumsum(axis=1) == 1 >>> df.mask(condition, False) a b c 0 False True True 1 False False True 2 False False False

     

返回形状与自身相同的对象,并且其对应的条目   来自cond为False的自我,否则来自其他人。

在这种情况下,df.mask(self, cond, other=nan)在除要切换condition-> True的点之外的所有地方均为False:

False

另一种选择是使用NumPy:

>>> condition
       a      b      c
0   True  False  False
1  False   True  False
2  False  False   True