首页 > 解决方案 > 如果值不是升序python,则删除列

问题描述

给定这样的数据:

象征
1 28.75 25.10
2 29.00 25.15
3 29.10 25.00

我想在所有行中按升序删除没有其值的列(尽管我想允许有间隙)。在这种情况下,我想删除列'Two'。我尝试以下代码但没有运气:

df.drop(df.columns[df.all(x <= y for x,y in zip(df, df[1:]))])

谢谢

标签: pythonpandas

解决方案


当忽略 s之后的值相差 1 滞后 ( ) 时,删除那些给出至少一个 ( any) 负值 ( ) 的列:lt(0)diff(1)NaNdropna

columns_to_drop = [col for col in df.columns if df[col].diff(1).dropna().lt(0).any()] 
df.drop(columns=columns_to_drop)
   Symbol    One
0       1  28.75
1       2  29.00
2       3  29.10

推荐阅读