Python 只需创建一个列,其中包含一个月内的所有天数-包含熊猫

Python 只需创建一个列,其中包含一个月内的所有天数-包含熊猫,python,pandas,Python,Pandas,我真的尝试了4个多小时来完成一项简单的任务: 在df中创建一列,其中包含熊猫,表示从一月份的第一天到最后一天。 例如: index date 0 2018-08-01 1 2018-08-02 2 2018-08-03 ... ... 我放弃了,在excel中这样做,保存在csv中,以便再次导入为熊猫中的df。。。 谢谢你的帮助 好的,当然。。。我忍不住要给你的问题写一个答案。当你说一个月内的所有日子时,我直接想到:我们如何得到最后一天? 答案是使用一个已经内置在熊

我真的尝试了4个多小时来完成一项简单的任务: 在df中创建一列,其中包含熊猫,表示从一月份的第一天到最后一天。 例如:

index date
0     2018-08-01
1     2018-08-02
2     2018-08-03
...   ...
我放弃了,在excel中这样做,保存在csv中,以便再次导入为熊猫中的df。。。
谢谢你的帮助

好的,当然。。。我忍不住要给你的问题写一个答案。当你说一个月内的所有日子时,我直接想到:我们如何得到最后一天? 答案是使用一个已经内置在熊猫体内的偏移量

除此之外,你还被训练成熊猫所说的动物。有许多选项可以创建日期范围,例如间隔和频率默认为天。但为了明确起见,让我们传递三个变量:

开始:作为时间对象的开始日期 结束:作为时间对象的结束日期。用一个月的时间建造它 频率:天这是可选的,但明确表示我们需要天 注意:补偿有助于轻松传递结束日期,因为一个月的天数可能会有所不同

考虑这个例子:

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_系列功能强大,如果你想每小时都做一次,你可以这样做:

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'
    )
})

好的,当然。。。我忍不住要给你的问题写一个答案。当你说一个月内的所有日子时,我直接想到:我们如何得到最后一天? 答案是使用一个已经内置在熊猫体内的偏移量

除此之外,你还被训练成熊猫所说的动物。有许多选项可以创建日期范围,例如间隔和频率默认为天。但为了明确起见,让我们传递三个变量:

开始:作为时间对象的开始日期 结束:作为时间对象的结束日期。用一个月的时间建造它 频率:天这是可选的,但明确表示我们需要天 注意:补偿有助于轻松传递结束日期,因为一个月的天数可能会有所不同

考虑这个例子:

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_系列功能强大,如果你想每小时都做一次,你可以这样做:

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'
    )
})

使用具有每月频率的时段的开始时间和结束时间创建每日日期时间索引

month = '2018-08'
period = pd.Period(month, freq='M')
>>> pd.Series(pd.DatetimeIndex(start=period.start_time, end=period.end_time, freq='D')).to_frame('date')
     date
0    2018-08-01
1    2018-08-02
2    2018-08-03
...
30   2018-08-31

使用具有每月频率的时段的开始时间和结束时间创建每日日期时间索引

month = '2018-08'
period = pd.Period(month, freq='M')
>>> pd.Series(pd.DatetimeIndex(start=period.start_time, end=period.end_time, freq='D')).to_frame('date')
     date
0    2018-08-01
1    2018-08-02
2    2018-08-03
...
30   2018-08-31


我们当然可以帮忙。但是你为什么想要这个目的,你尝试了什么,这样我们就可以知道你错了什么。谢谢谢谢其目的是创建一个列,每一天为一个月。因为我有几个数据表。每个表都是一个月的参考。但没有任何表具有日期格式的此列。我需要将所有表附加在一起。如果每个表中没有这个日期列,after append将丢失这个时间关系。没用。最后一个是:df['data']=pd.Timestampyear=2018,month=8,day=1,freq=1。最后一个在所有行中创建同一天。我认为freq=1会理解每一行,并为每一行做一天。当然我们可以提供帮助。但是你为什么想要这个目的,你尝试了什么,这样我们就可以知道你错了什么。谢谢谢谢其目的是创建一个列,每一天为一个月。因为我有几个数据表。每个表都是一个月的参考。但没有任何表具有日期格式的此列。我需要将所有表附加在一起。如果每个表中没有这个日期列,after append将丢失这个时间关系。没用。最后一个是:df['data']=pd.Timestampyear=2018,month=8,day=1,freq=1。最后一个在所有行中创建同一天。我认为freq=1会理解每一行,并为每一行做一天。。。这个时期。不过,请不要忘记要求使用数据帧:。首先,我创建了一个格式为“year-month”的字符串变量。其次,使用这个函数系列创建一个现在是日期的变量,并告诉这个日期是M-month。第三,创建一个变量,在该变量前面加一个name=表示它是一个系列,还表示它是从当月的第1天到当月的最后一天。我理解,试试看!而且有效!谢谢df['data-series']=result-现在我将这个系列的结果附加到我的df中,作为一个名为'data-series'的新列。工作正常!是的,是的。。。这个时期。不过,请不要忘记要求使用数据帧:。首先,我创建了一个格式为“year-month”的字符串变量。其次,使用这个函数系列创建一个现在是日期的变量,并告诉这个日期是M-month。第三,创建一个变量,在该变量前面加一个name=表示它是一个系列,还表示它是从当月的第1天到当月的最后一天。我理解,试试看!而且有效!谢谢df['data-series']=result-现在我将这个系列的结果附加到我的df中,作为一个名为'data-series'的新列。工作正常!谢谢我试过了,也成功了。比亚历山大给出的解决方案要复杂得多。但如果需要时间,功能会更强。两种方法都有效!在熊猫身上有很多做事的方法。我想你会喜欢的
我们总是选择可读性最好的选项。祝你好运谢谢我试过了,也成功了。比亚历山大给出的解决方案要复杂得多。但如果需要时间,功能会更强。两种方法都有效!在熊猫身上有很多做事的方法。我认为你应该选择最具可读性的选项。祝你好运