Pandas: dt.dayofweek 显示不正确的值
Pandas: dt.dayofweek showing incorrect values
我很难理解为什么星期几将星期五解释为星期四。
一些简单的数据:
import pandas as pd
# Simple time series data:
series = pd.Series({"2017-02-20": 1, '2017-02-21':2, '2017-02-22':3, '2017-02-23': 4, '2017-02-24':5})
datetime = pd.to_datetime(series.index)
# turn series in to dataframe:
df = pd.DataFrame(series.values, index=datetime)
现在,如果我们调用 argmax()
并询问星期几,我们会得到:
df[0].argmax().dayofweek
# 4
所以说星期五是一周的第 4 天,这显然是错误的。
我做错了什么吗?我在这个问题上花了太长时间了!
我可以猜测这个函数没有正确实现,但如果它不能计算任意日期时间索引的星期几,它对我来说有点失败
的文档中所述
The day of the week with Monday=0, Sunday=6
所以是的,星期五将被标记为 4。如果您不喜欢这种数字到星期几的特定映射,您可以随时将此映射映射到您喜欢的任何内容,例如如果您希望星期日->星期六为 1->7,
>>> custom_map = dict(zip(range(7), [2, 3, 4, 5, 6, 7, 1]))
>>> custom_map
{0: 2, 1: 3, 2: 4, 3: 5, 4: 6, 5: 7, 6: 1}
虽然我没有真正看到这样做的价值。
我很难理解为什么星期几将星期五解释为星期四。
一些简单的数据:
import pandas as pd
# Simple time series data:
series = pd.Series({"2017-02-20": 1, '2017-02-21':2, '2017-02-22':3, '2017-02-23': 4, '2017-02-24':5})
datetime = pd.to_datetime(series.index)
# turn series in to dataframe:
df = pd.DataFrame(series.values, index=datetime)
现在,如果我们调用 argmax()
并询问星期几,我们会得到:
df[0].argmax().dayofweek
# 4
所以说星期五是一周的第 4 天,这显然是错误的。
我做错了什么吗?我在这个问题上花了太长时间了!
我可以猜测这个函数没有正确实现,但如果它不能计算任意日期时间索引的星期几,它对我来说有点失败
The day of the week with Monday=0, Sunday=6
所以是的,星期五将被标记为 4。如果您不喜欢这种数字到星期几的特定映射,您可以随时将此映射映射到您喜欢的任何内容,例如如果您希望星期日->星期六为 1->7,
>>> custom_map = dict(zip(range(7), [2, 3, 4, 5, 6, 7, 1]))
>>> custom_map
{0: 2, 1: 3, 2: 4, 3: 5, 4: 6, 5: 7, 6: 1}
虽然我没有真正看到这样做的价值。