繁体   English   中英

根据 dataframe 中的其他列更改 pandas dataframe 列值

[英]Change pandas dataframe column values based on other columns in dataframe

我正在尝试创建一个“工作日”列,根据它是工作日还是假期,将日期范围标记为“真”或“假”。 如果它是工作日而不是假期,那么它被认为是“工作日”,否则不是工作日。

直到最后一行,一切似乎都按预期进行。 我创建了名为“工作日”的新列,将值填充为“工作日”中的任何内容,但是当我 go 将“工作日”中的值替换为“假期”为真时,它似乎不是做任何事。

我在哪里错了? 另外,如果您对简化我的代码有任何想法,请告诉我,我显然是初学者。 :) 任何帮助表示赞赏!

import pandas as pd
import numpy as np
from datetime import datetime
from pandas.tseries.holiday import USFederalHolidayCalendar as holidaylist

datelist = pd.date_range(start='2018-08-01', end=datetime.today())

bizdaylist = pd.date_range(start='2018-08-01', end=datetime.today(), freq='B')

df1_columns = ['date']
df1 = pd.DataFrame(datelist, columns = df1_columns)

df2_columns = ['date']
df2 = pd.DataFrame(bizdaylist, columns = df2_columns)

df1 = df1.assign(weekday=df1.date.isin(df2.date).astype(str))

df3 = pd.DataFrame()
df3['Date'] = datelist

hl = holidaylist()
holidays = hl.holidays(start=datelist.min(), end=datelist.max())

df1['holiday'] = df3['Date'].isin(holidays)

df1['workday'] = np.where(df1.holiday == 'FALSE', df1.holiday, df1.weekday)

print(df1.loc[877:884])

dataframe索引877-884:

数据帧索引 877-884

工作日查询不正确。

您需要将其更改为

df1['workday'] = np.where((df1.weekday == 'False') | (df1.holiday == True), False, True)

此外,该值存储为False而不是FALSE 所以你的支票必须完全匹配。

您将工作日作为 object,因为您将其转换为 astype(str)。 所以你需要检查'False'的字符串值

如果不是工作日或假日,则该值为 False。 否则它必须为真。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM