我有一个df
类似于以下的DataFrame (摘录,“ Timestamp”是索引):
Timestamp Value
2012-06-01 00:00:00 100
2012-06-01 00:15:00 150
2012-06-01 00:30:00 120
2012-06-01 01:00:00 220
2012-06-01 01:15:00 80
...and so on.
我需要一个新列df['weekday']
,分别包含时间戳记的星期几/星期几。
我怎么能得到这个?
使用新dt.dayofweek
属性:
In [2]:
df['weekday'] = df['Timestamp'].dt.dayofweek
df
Out[2]:
Timestamp Value weekday
0 2012-06-01 00:00:00 100 4
1 2012-06-01 00:15:00 150 4
2 2012-06-01 00:30:00 120 4
3 2012-06-01 01:00:00 220 4
4 2012-06-01 01:15:00 80 4
在Timestamp
索引是的情况下,您需要重置索引,然后调用该dt.dayofweek
属性:
In [14]:
df = df.reset_index()
df['weekday'] = df['Timestamp'].dt.dayofweek
df
Out[14]:
Timestamp Value weekday
0 2012-06-01 00:00:00 100 4
1 2012-06-01 00:15:00 150 4
2 2012-06-01 00:30:00 120 4
3 2012-06-01 01:00:00 220 4
4 2012-06-01 01:15:00 80 4
奇怪的是,如果您尝试从索引创建一个序列以不重置索引,您将NaN
像使用的结果reset_index
调用dt.dayofweek
属性那样获得值,而没有将结果reset_index
赋回原始df:
In [16]:
df['weekday'] = pd.Series(df.index).dt.dayofweek
df
Out[16]:
Value weekday
Timestamp
2012-06-01 00:00:00 100 NaN
2012-06-01 00:15:00 150 NaN
2012-06-01 00:30:00 120 NaN
2012-06-01 01:00:00 220 NaN
2012-06-01 01:15:00 80 NaN
In [17]:
df['weekday'] = df.reset_index()['Timestamp'].dt.dayofweek
df
Out[17]:
Value weekday
Timestamp
2012-06-01 00:00:00 100 NaN
2012-06-01 00:15:00 150 NaN
2012-06-01 00:30:00 120 NaN
2012-06-01 01:00:00 220 NaN
2012-06-01 01:15:00 80 NaN
编辑
正如用户@joris向我指出的那样,您只能访问weekday
索引的属性,因此以下内容将有效并且更加紧凑:
df['Weekday'] = df.index.weekday
问题内容: 因此,对于一个开始日期和结束日期,我想确定在这两个日期之间发生的一周中的特定天数。 那么多少个星期一,星期二等 我知道我可以在“开始日期”和“结束日期”之间循环并每天检查一次,但是可能相差很多天。我更喜欢不需要循环的东西。有任何想法吗?(必须在SQL Server2005+中受支持) 问题答案: 鉴于我 认为 您正在尝试获得的结果,应该这样做:
问题内容: 如何获取周六的日期。我今天有约会。 这该怎么做。 例如。今天是 我想输出为 问题答案: 如果您这样调用该函数,它将在下一个星期六返回: “ 6”来自您可以设置的可能值的列表。 您可以通过相应地更改第二个参数来获取星期几。 这是功能: [编辑] 这可能是另一种解决方案。这应该以任何语言工作:
问题内容: 如何获得当前一周的星期一和星期五的日期? 我有以下代码,但是如果当前日期是星期日或星期六,则它将失败。 问题答案: 这些strtotime输入效果很好: 您需要做的就是将逻辑包装在一些if语句中。
问题内容: 我有当前日期,还有一个常数,它指示星期几。我想基于该常数获取一周的开始日期。如果我将一周的第一天硬编码为星期一(或其他任何东西),那么这很简单。但是一周的第一天一直在变化。因此,我不想在每次更改第一天时都更改代码。 这是我尝试使用Java的Calendar的方法: 我想获取一周的开始日期。上面的函数返回星期的第一天,并且星期开始日期被硬编码为星期六。每当星期开始日期以上的要求发生变化时
问题内容: 我已经实现了一种获取当前星期中星期一的日期的方法,并且已经将星期一指定为星期的第一天。 但是,无论我做什么,它都会返回2013年3月24日格林尼治标准时间。我看不到这里的问题。有人能帮忙吗? 问题答案: 试试这个 :
问题内容: 我正在尝试获取SQL Server 2008中的最新星期五。 我有这个。它获取一周的开始时间(星期一),然后减去3天即可得出星期五。 在一周中运行此命令时,它将获得上周五的正确日期。但是,在星期五(或星期六)运行时,它仍然是上周的日期,而不是当前星期的星期五。我将使用if / else条件,但是我敢肯定有一种更简单的方法。 问题答案: 这适用于以下任何输入和任何设置: 通过将工作日值调