python - 根据 DateTimeIndex 更新列

标签 python pandas datetime

我有一个带有 DateTimeIndex 的 Pandas 数据框和一个名为 WEEKEND 的空列。

如果索引中的日期时间是周末,我想将该列的值设置为“YES”,以便生成的数据帧如下所示:

TIME                    WEEKEND
2019-01-01 00:00:00     NO
2019-01-02 06:00:00     NO
2019-01-03 21:00:00     NO
2019-01-04 18:00:00     NO
2019-01-05 03:00:00     YES
2019-01-06 07:00:00     YES
2019-01-07 10:00:00     NO
2019-01-08 08:00:00     NO

我知道我能做到:

df.loc[df.index.dayofweek == 5, 'WEEKEND'] = "YES" # Saturday
df.loc[df.index.dayofweek == 6, 'WEEKEND'] = "YES" # Sunday

但我想在一个语句中完成此操作,可能使用 IN 关键字。

我尝试了这个,但出现错误:

df.loc[df.index.dayofweek in [5,6], 'WEEKEND'] = "YES"

实现这一目标的最佳方法是什么?

谢谢

最佳答案

您可以在 .loc 中申请或

df.loc[(df.index.dayofweek == 5) | (df.index.dayofweek == 6), 'WEEKEND'] = "YES"

使用 .isin 的第二种解决方案

df.loc[df.index.dayofweek.isin([5,6]) , 'WEEKEND'] = "YES"

关于python - 根据 DateTimeIndex 更新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57061006/

相关文章:

python - 在远程节点执行 bash 脚本并通过服务器上的 python 进行控制

pandas - 在 Pandas 中查询 timedelta 列,并过滤行

java - PrintStream.println() 行为 - Java/Python/任何语言

python - 通过索引创建有序矩阵

python - 根据两列组合的匹配将列从一个数据帧复制到另一数据帧

python - 对于所有列,给定列中的所有行都必须匹配

java - Joda DateTimeFormatter 设置时区时抛出异常 : "is malformed at"

c# - 为日期时间设置默认时区

java - 将日历对象转换为格式为 "yyyy-mm-dd hh:mm:ss"的 java 字符串

python - Django - 禁用表单选择字段验证