所以我有一个数据框:
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'
我该怎么办?我如何整理这些行以及更简单的方法是什么?
请尝试:
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
将
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])]