我真的尝试了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
的内容感到好奇.有许多选项可以创建日期范围,例如间隔和频率(默认为天)。但为了清楚起见,让我们传递三个变量:
- 开始:我们的开始日期作为时间对象
- end :我们的结束日期作为时间对象。用 pandas offset Monthsend 构造它
- 频率:天(这是可选的,但明确表示我们需要天数)
注意:偏移量有用的原因是可以轻松通过结束日期,因为一个月中的天数可能会有所不同。
考虑这个例子:
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/