删除线性增加"计数"列熊猫

时间:2018-04-23 14:39:46

标签: python pandas dataframe

我有一个数据框,其中一些列表示每个时间步的计数,我想自动删除这些,例如df.dropna()功能,但类似df.dropcounts()

这是一个示例数据框

array = [[0.0,1.6,2.7,12.0],[1.0,3.5,4.5,13.0],[2.0,6.5,8.6,14.0]]
pd.DataFrame(array)

     0    1    2     3
0  0.0  1.6  2.7  12.0
1  1.0  3.5  4.5  13.0
2  2.0  6.5  8.6  14.0

我想删除第一列和最后一列

2 个答案:

答案 0 :(得分:1)

我认为需要:

val = 1
df = df.loc[:, df.diff().fillna(val).ne(val).any()]
print (df)
     1    2
0  1.6  2.7
1  3.5  4.5
2  6.5  8.6

<强>解释

首先按DataFrame.diff进行比较:

print (df.diff())
     0    1    2    3
0  NaN  NaN  NaN  NaN
1  1.0  1.9  1.8  1.0
2  1.0  3.0  4.1  1.0

替换NaN s:

print (df.diff().fillna(val))
     0    1    2    3
0  1.0  1.0  1.0  1.0
1  1.0  1.9  1.8  1.0
2  1.0  3.0  4.1  1.0

如果不等于ne

print (df.diff().fillna(val).ne(val))
       0      1      2      3
0  False  False  False  False
1  False   True   True  False
2  False   True   True  False

DataFrame.any每列至少一个True

print (df.diff().fillna(val).ne(val).any())
0    False
1     True
2     True
3    False
dtype: bool

答案 1 :(得分:1)

使用all

d.loc[:,~d.diff().fillna(1).eq(1).all().values]
Out[295]: 
     1    2
0  1.6  2.7
1  3.5  4.5
2  6.5  8.6