Python 如果值不是按升序排列,则删除列
给出这样的数据: 象征 一个 两个 1. 28.75 25.10 2. 29 25.15 3. 29.10 25Python 如果值不是按升序排列,则删除列,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
忽略
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)])