python - 只需创建一个包含一个月所有日期的列 - 使用 pandas

标签 python pandas

我真的尝试了4个多小时来完成一个简单的任务: 用 pandas 在 df 中创建一个列,代表该月的第一天到最后一天。 例如:

index date
0     2018-08-01
1     2018-08-02
2     2018-08-03
...   ...

我放弃并在 excel 中执行此操作,保存在 csv 中以再次作为 df 在 pandas 中导入... 感谢您的帮助!

最佳答案

好的,当然...我忍不住写下您问题的答案。当你说一个月中的所有天数时,我直接想到:我们如何获得最后一天? 答案是使用偏移量(已经内置在 Pandas 中)。

除此之外,您还对 Pandas 中称为 date_range 的内容感到好奇.有许多选项可以创建日期范围,例如间隔和频率(默认为天)。但为了清楚起见,让我们传递三个变量:

  1. 开始:我们的开始日期作为时间对象
  2. end :我们的结束日期作为时间对象。用 pandas offset Monthsend 构造它
  3. 频率:天(这是可选的,但明确表示我们需要天数)

注意:偏移量有用的原因是可以轻松通过结束日期,因为一个月中的天数可能会有所不同。

考虑这个例子:

import pandas as pd

month = '2018-08'

df = pd.DataFrame({
    'date': pd.date_range(
        start = pd.Timestamp(month),                        
        end = pd.Timestamp(month) + pd.offsets.MonthEnd(0),  # <-- 2018-08-31 with MonthEnd
        freq = 'D'
    )
})

date_range 很强大,如果你想每小时都可以做这样的事情:

df = pd.DataFrame({
    'date': pd.date_range(
        start = pd.Timestamp(month),
        end = pd.Timestamp(month) + pd.offsets.MonthEnd(0) + pd.Timedelta(days=1),
        freq = 'H',     # <--- try '3h', '6h', '12h' if you want
        closed = 'left'
    )
})

关于python - 只需创建一个包含一个月所有日期的列 - 使用 pandas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52685239/

相关文章:

Python ssl 服务器报告 TLSV1_ALERT_UNKNOWN_CA

python - 如何将 SymPy 的 DifferentialOperator 应用于另一个运算符?

python - 在Python中,如果ID匹配,则将行移动到列,同时对特定列求和

python - 将嵌套列表转换为 Pandas DF

python - pandas get_dummies 无法处理测试数据中看不见的标签

python - 无限除以 2

python - 使用 matplotlib 的 x-y 散点图中误差条的颜色图

javascript - 如何将这个简单的 python 代码转换为 javascript?

python - 在 Python 中对 csv 进行排序 - 使用字符串分隔符拆分第一列,然后通过第二个元素排序,然后通过第一个元素排序

python - Pandas Dataframe - 用倒数替换列值