删除熊猫中值没有增加的列

时间:2019-12-17 11:23:03

标签: python pandas dataframe multiple-columns

我有一个带值的df,有些列的值增加,有些列的值减少或不改变。我想删除这些列。我尝试使用is_monotonic,但如果值增加,则返回boolean = TRUE,但如果值保持不变,则不包括

data = [{'a': 1, 'b': 2, 'c':33}, {'a':10, 'b': 2, 'c': 30}]

df = pd.DataFrame(data) 

在上面的示例中,我只想保留列“ a”,因为其他两列相同或递减值。有人可以帮我吗?

1 个答案:

答案 0 :(得分:3)

获取所有列的差异,仅删除第一个NaNs行,然后比较所有值是否都大如0

df = df.loc[:, df.diff().iloc[1:].gt(0).all()]
print (df)
    a
0   1
1  10

详细信息

print (df.diff())
     a    b    c
0  NaN  NaN  NaN
1  9.0  0.0 -3.0

print (df.diff().iloc[1:])
     a    b    c
1  9.0  0.0 -3.0

print (df.diff().iloc[1:].gt(0))
      a      b      c
1  True  False  False

print (df.diff().iloc[1:].gt(0).all())
a     True
b    False
c    False
dtype: bool

或者就像注释中提到的更改逻辑-如果les等于0则获取任何列,并通过~更改掩码:

df = df.loc[:, ~df.diff().le(0).any()]