gpt4 book ai didi

python - Pandas :删除等于周末的列

转载 作者:太空宇宙 更新时间:2023-11-04 02:47:46 25 4
gpt4 key购买 nike

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

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

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

2017-04-07       
a

有人知道怎么做吗?

最佳答案

使用weekday + isin用于带 loc 的 mask 和 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

关于python - Pandas :删除等于周末的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44656160/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com