我想使用 .weekday() 创建一个新的分组数据框,其中仅包含带假期的日期

问题描述 投票:0回答:2

所以我有一个数据框:

dateRep day month   year    cases   deaths  country_name    Land.area..sq..km.
0   2021-09-21  21  9   2021    1162    7   Austria 82520.0
1   2021-09-20  20  9   2021    1708    7   Austria 82520.0
2   2021-09-19  19  9   2021    2072    5   Austria 82520.0
3   2021-09-18  18  9   2021    2235    9   Austria 82520.0
4   2021-09-17  17  9   2021    2283    8   Austria 82520.0
... ... ... ... ... ... ... ... ...
6145    2021-03-05  5   3   2021    4069    15  Sweden  407310.0
6146    2021-03-04  4   3   2021    4882    19  Sweden  407310.0
6147    2021-03-03  3   3   2021    4873    18  Sweden  407310.0
6148    2021-03-02  2   3   2021    6191    23  Sweden  407310.0
6149    2021-03-01  1   3   2021    668975  13086   Sweden  407310.0
6150 rows × 8 columns

我的目标是创建一个新的数据框,其中仅包含符合“dateRep”列中特定条件的行

条件是使用 .weekday() 函数是假期(周日或周六)

但问题是当我尝试这样做时

df.loc[(df['dateRep'].weekday() == 5) or (df['dateRep'].weekday == 6)]

我有一个错误

AttributeError: 'Series' object has no attribute 'weekday'

我该怎么办?我如何整理这些行以及更简单的方法是什么?

python pandas dataframe dataset data-science
2个回答
1
投票

请尝试:

df.loc[(df['dateRep'].dt.weekday == 5)|(df['dateRep'].dt.weekday == 6)]

https://pandas.pydata.org/docs/reference/api/pandas.Series.dt.weekday.html#pandas.Series.dt.weekday


0
投票

dateRep
转换为日期时间系列并使用
.dt.
访问器:

df["dateRep"] = pd.to_datetime(df["dateRep"])
print(df.loc[(df["dateRep"].dt.weekday == 5) | (df["dateRep"].dt.weekday == 6)])

打印:

     dateRep  day  month  year  cases  deaths country_name  Land.area..sq..km.
2 2021-09-19   19      9  2021   2072       5      Austria             82520.0
3 2021-09-18   18      9  2021   2235       9      Austria             82520.0

或:使用

.isin()
获取较短的代码:

df.loc[df["dateRep"].dt.weekday.isin([5, 6])]
© www.soinside.com 2019 - 2024. All rights reserved.