删除熊猫中值不增加的列



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

data = [{'a': 1, 'b': 2, 'c':33}, {'a':10, 'b': 2, 'c': 30}]
df = pd.DataFrame(data) 

在上面的示例中,我只想保留"a"列,因为其他两列的值相同或递减。 谁能帮我?

获取所有列的差异,首先仅删除 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()]

最新更新