Python 如果值不是按升序排列,则删除列

Python 如果值不是按升序排列,则删除列,python,pandas,Python,Pandas,给出这样的数据: 象征 一个 两个 1. 28.75 25.10 2. 29 25.15 3. 29.10 25 忽略NaN之后的值相差1滞后(diff(1))时,删除至少给出一个(any)负值(lt(0))的列(dropna): columns\u to\u drop=[cols for col in df.columns if df[col].diff(1).dropna().lt(0).any()] df.drop(列=列到列) 使用间隙(NaN)的表达式 A.loc[:,~(A.ilo

给出这样的数据:

象征 一个 两个 1. 28.75 25.10 2. 29 25.15 3. 29.10 25
忽略
NaN
之后的值相差1滞后(
diff(1)
)时,删除至少给出一个(
any
)负值(
lt(0)
)的列(
dropna
):

columns\u to\u drop=[cols for col in df.columns if df[col].diff(1).dropna().lt(0).any()]
df.drop(列=列到列)

使用间隙(NaN)的表达式

A.loc[:,~(A.iloc[1:,:].reset_index()>A.iloc[:-1,:].reset_index()).any()]
如果没有差距,它将相当于


A.loc[:,(A.iloc[1:,:].reset_index()签出代码,唯一的逻辑是:

map(lambda i: list(df[i]) == sorted(list(df[i])), df.columns)]

map(lambda i: list(df[i]) == sorted(list(df[i])), df.columns)]
import pandas as pd
import numpy as np

df = pd.DataFrame(
    {
        'Symbol': [1, 2, 3],
        'One': [28.75, 29.00, 29.10],
        'Two': [25.10, 25.15, 25.10],
    }
)

print(df.loc[:,map(lambda i: list(df[i]) == sorted(list(df[i])), df.columns)])