熊猫:丢弃等于周末的列

时间:2017-06-20 14:41:20

标签: python pandas weekend

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

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

我现在想要删除每个列的名称,即哪一天等于周末。例如,在上面的例子中,只剩下这个:

2017-04-07       
   a               

有人知道怎么做吗?

1 个答案:

答案 0 :(得分:2)

使用weekday + isin屏蔽locboolean 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

对于大熊猫使用的版本:

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