Pandas:删除等于周末的列

Pandas: Drop Columns that are equal to weekend

我有一个可能相当简单的问题。我有 10 年的每日 df,其中包含具有数据并根据日期命名的列:

2017-04-07      2017-04-08     2017-04-09  
   a                a                a

我现在想删除名称(即哪一天)等于周末的每一列。例如,在上面的例子中,只有这个会保留:

2017-04-07       
   a               

有人知道怎么做吗?

对 select 所有非 (~) 工作日的列使用 weekday + isin for mask with loc and boolean indexing

print (df)
  2017-04-07 2017-04-08 2017-04-09 2017-04-10
0          a          a          a          a

#if necessary
df.columns = pd.to_datetime(df.columns)

print (~df.columns.weekday.isin([5,6]))
[ True False False  True]

print (df.loc[:, ~df.columns.weekday.isin([5,6])])
  2017-04-07 2017-04-10
0          a          a

另一个解决方案:

df.columns = pd.to_datetime(df.columns)
print (df[df.columns[~df.columns.weekday.isin([5,6])]])
  2017-04-07 2017-04-10
0          a          a

对于 pandas 的旧版本,请使用:

print (df[df.columns[~pd.Series(df.columns.weekday).isin([5,6])]])
  2017-04-07 2017-04-10
0          a          a

或:

print (df[df.columns[np.in1d(df.columns.weekday, [5,6])]])
  2017-04-08 2017-04-09
0          a          a