【问题标题】:delete columns where values are not increasing in pandas删除熊猫中值不增加的列
【发布时间】:2019-12-17 11:23:03
【问题描述】:

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

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

df = pd.DataFrame(data) 

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

【问题讨论】:

  • df.loc[:, ~(df.diff() <= 0).any(0)] ..?

标签: python pandas dataframe multiple-columns


【解决方案1】:

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

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

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

【讨论】:

  • @ChrisA - 当然,如果有时没有,请告诉我
猜你喜欢
  • 2015-11-07
  • 2018-02-18
  • 2022-07-13
  • 1970-01-01
  • 2014-12-08
  • 1970-01-01
  • 1970-01-01
  • 2021-03-22
  • 2020-07-06
相关资源
最近更新 更多