python - 根据 Pandas DataFrame 中的日期时间对象间隔获取值
问题描述
我有一个包含以下选举数据的数据框:
Date Winner
0 1910-04-13 ALP
1 1913-05-31 L+NP
2 1914-09-05 ALP
3 1917-05-05 L+NP
4 1919-12-13 L+NP
How can I calculate the current elected party for a given date not explicitly stated in the dataset?
例如,当我尝试以下代码时,我得到一个空系列
df['Winner'][df['Date'].dt.year == 1916]
我怎样才能从 ALP 的那个日期获得之前的选举结果?
解决方案
一种方法是制作新列并进行比较:
import pandas as pd
df['Date'] = pd.to_datetime(df['Date'])
df['End'] = df['Date'].shift(-1) - pd.Timedelta(days=1)
df['End'].fillna(pd.datetime.now(), inplace=True)
新df
:
Date Winner End
0 1910-04-13 ALP 1913-05-30 00:00:00.000000
1 1913-05-31 L+NP 1914-09-04 00:00:00.000000
2 1914-09-05 ALP 1917-05-04 00:00:00.000000
3 1917-05-05 L+NP 1919-12-12 00:00:00.000000
4 1919-12-13 L+NP 2019-06-09 15:43:14.319334
然后使用逻辑比较:
q = pd.datetime(1916, 10, 1)
df['Winner'][(df['Date'] < q) & (q < df['End'])]
输出:
2 ALP
Name: Winner, dtype: object
推荐阅读
- clojure - Clojure 中带有映射的函数参数
- laravel - laravel 验证器未验证图像图像尺寸是否正确
- git - git - 致命:您当前的分支似乎已损坏(可能来自中断的拉动)
- php - 我想将图像上传到 laravel 中的公共文件夹和数据库中,但我遇到了一些问题
- flutter - 如何在特定位置在字符串中添加空格
- git - 我可以删除历史记录并保留最近 git 提交的 sha 吗?
- c++ - 虚幻引擎 4 教程不适用于 Visual Studio 17
- java - 当我点击自己的 API 时如何刷新 RecyclerView 显示
- javascript - Async await Node.js Unit Testing code using Chai and mocha
- javascript - How to compare whether a path is in same folder or not