python - 把时期分成年

标签 python pandas

我有一个包含以下内容的电子表格:

start_date | end_date | rating
-----------|----------|--------
01/01/2010 |01/01/2012| 2
01/12/2012 |01/01/2014| 4
-----------|----------|--------

我想把时间段分成年,例如上面的例子,我想得到以下结果:

year | rating 
-----|--------
2010 | 2
2011 | 2
2012 | 2
2012 | 4
2013 | 4
2014 | 4
-----|--------

是否可以通过 pandas 方法做到这一点??

最佳答案

理解

假设日期是相同格式的字符串

pd.DataFrame(
    [(y, r) for s, e, r in zip(*map(df.get, df))
     for y in range(int(s[-4:]), int(e[-4:]) + 1)],
    columns=['year', 'rating']
)

   year  rating
0  2010       2
1  2011       2
2  2012       2
3  2012       4
4  2013       4
5  2014       4

类似但使用 f-string 和 pd.date_range

pd.DataFrame(
    [(y, r) for s, e, r in zip(*map(df.get, df))
     for y in pd.date_range(s, f"12/31/{e[-4:]}", freq='Y').year],
    columns=['year', 'rating']
)

关于python - 把时期分成年,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52370069/

相关文章:

python - 使用 matplotlib 更新灰度图像

python - 为什么 'pip install mysqlclient' 在 ubuntu 18.04 LTS 中不工作

python - 使用 Pandas 数据框列中的整数从另一列内的列表中提取特定值

python - 从 dtype ('O' ) 转换为 datetime 的问题

python - 如何使用批量插入将数据从 Dataframe 插入 SQL Server 表?

python - 访问 GREL/Open Refine(或 R、Python)中特定值的列名称

python - 如何使用正则表达式从字符串中删除字符副本?

python - 如何在硬超时时重试 celery 任务?

python - 使用 groupby 的列的累积列表

python - pandas' `str.extract()` 中带有捕获组的正则表达式的预期行为