2017-07-26 101 views

回答

3

使用 '逆' 条件<>=,因为只需要值相等或更高:

df = pd.DataFrame([[1,0,8]], columns = pd.date_range('2001-01-01', periods=3)) 
print (df) 
    2001-01-01 2001-01-02 2001-01-03 
0   1   0   8 

print (df.columns >= '2001-01-02') 
[False True True] 


df1 = df.loc[:, df.columns >= '2001-01-02'] 
print (df1) 
    2001-01-02 2001-01-03 
0   0   8 

cols = df.columns[df.columns >= '2001-01-02'] 
df1 = df[cols] 
print (df1) 
    2001-01-02 2001-01-03 
0   0   8 

另一种解决方案是增加~boolean array

df1 = df.loc[:, ~(df.columns < '2001-01-02')] 
print (df1) 
    2001-01-02 2001-01-03 
0   0   8 
0

您可以使用label slices with loc

df.loc[:, :'2001-01-02'] 

    2001-01-01 2001-01-02 
0   1   0 

And

df.loc[:, '2001-01-02':] 

    2001-01-02 2001-01-03 
0   0   8