我们有一个条目的数据框架,我们想知道在任何一年的给定月份内哪些条目曾经存在过。简化的例如:
import pandas as pd
import datetime as dt
df = pd.DataFrame(
{
"start": [dt.datetime(2020,1,1), dt.datetime(2020,8,1), dt.datetime(2020,8,1)],
"finish": [dt.datetime(2021,12,1), dt.datetime(2021,6,1), dt.datetime(2022,6,1)],
})
我们如何添加一个列来确定哪些条目在任何一年的任何一个7月都存在呢?如果我们只关心2020年7月,我们可以添加这个列:df['existed_in_july_2020'] = (df['start'] < dt.datetime(2020,7,1)) & (df['finish'] >= dt.datetime(2020,8,1))
,但这个没有其他年份,第三个条目存在于2021年7月。
在这个例子df中,列existed_in_july
将是:
df = pd.DataFrame(
{
"start": [dt.datetime(2020,1,1), dt.datetime(2020,8,1), dt.datetime(2020,8,1)],
"finish": [dt.datetime(2021,12,1), dt.datetime(2021,6,1), dt.datetime(2022,6,1)],
"existed_in_july": [True, False, True]
})
如何创建此列?
2条答案
按热度按时间lkaoscv71#
一个可行的选择是检查开始或结束年份的7月是否在这两个日期之间,或者两者之间是否超过一年:
输出:
lrl1mhuk2#
您可以在列表解析中使用月份期间和测试July月份: