python - 基于日期时间的子集数据框
问题描述
我对如何将数据框的特定月份的日期进行子集化有点困惑。
数据框是museum_data,其中包含访客信息。数据框索引是日期时间。
最后,我想要一条由两条线组成的线图,一条是夏季每个月的访客数量,另一个是冬季每个月的访客数量,叠加在自己身上(我意识到这在逻辑上不会很有用,但这只是为了练习日期的子集数据框)。
我想出了下面的代码,但没有任何结果:
museum_data["datetime"] = pd.to_datetime(museum_data.index)
winter = {'Year':[2014,2015,2016,2017,2018,2019], 'Month':['Jan','Feb','Sep','Oct','Nov','Dec']}
summer = {'Year':[2014,2015,2016,2017,2018,2019], 'Month':['Mar','Apr','May','Jun','Jul','Aug']}
winter_months = []
for x in winter['Year']:
for y in winter['Month']:
new = str(x)+'-'+str(y)+'-01'
pd.to_datetime(new)
winter_months.append(new)
summer_months = []
for x in summer['Year']:
for y in summer['Month']:
new = str(x)+'-'+str(y)+'-01'
pd.to_datetime(new)
summer_months.append(new)
summer1 = pd.DataFrame(data=museum_data[museum_data['datetime'] in summer_months])
winter1 = pd.DataFrame(data=museum_data[museum_data['datetime'] in winter_months])
plt.figure(figsize=(16,6))
sns.lineplot(data=summer1, label='Summer')
sns.lineplot(data=winter1, label='Winter')
上面代码中的summer1 行(因此是winter1)给了我一个错误:ValueError:一个系列的真值是不明确的。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。
请让我知道如何使代码正常工作,以及是否有任何更有效的方法来相应地对数据进行子集化。谢谢!
解决方案
您需要更改两件事:
summer1 = pd.DataFrame(data=museum_data[museum_data['datetime'].isin(summer_months)])
和
new = pd.to_datetime(new) # otherwise this line will have no effect
推荐阅读
- reactjs - 面临通过 React Router 从 App 组件传递状态(通过 api 加载)的问题
- macos - Brew 在 macOS 上安装 Elasticsearch 7.9.2 失败
- javascript - 如何在AngularJs中格式化数字?
- html - Border of parent div not binding to size of children
- cpu-architecture - 现代计算中的存储程序计算机
- javascript - 反应上下文打字稿问题
- python - 如果您在读取 csv 文件后 seek(0),则 line_num 属性不会重置。为什么会发生这种情况?
- python-3.x - FastAPI 通过 SqlAlchemy 处理多个数据库连接
- python - 从 url 响应(文本文件)解析 XML 错误,开始时带有 HTML 块
- c++ - 我正在尝试在 C++ 中使用运算符重载,但是当我去实现该函数时,它会提供此错误