2024-04-25 01:04:23 发布
网友
我有一个熊猫数据框架,它包含大约100列。 这些列中的大多数都是日期,我希望遍历所有这些
以下是一个例子:
如果日期+天数<;=2020-12-20,将此列的值设置为TRUE,如果否,则设置为FALSE。 我唯一不能做的就是在我的条件中将列名作为参数,并对所有这些日期列执行此操作
以下是我的预期输出:
也许在一个循环中,但要运行很长时间
确保将日期列转换为datetime,以使其正常工作
我使用的基本步骤是:
from dateutil.relativedelta import relativedelta shifted_date = [ t + relativedelta(days=nb_days) for t, nb_days in zip(df[date], df[nbDays]) ] date_columns = df.select_dtypes(include=[np.datetime64]).columns for date_column in date_columns: date_to_check = pd.to_datetime(date_column) df[date_column] = np.where( shifted_date <= date_to_check, True, False )
不要害怕在这里使用for循环,因为艰巨的工作是在np.where函数中矢量化的
for
np.where
因为列的顺序是固定的,所以可以将日期存储在列表或序列中,然后使用它生成值,如
dates = df.columns[2:] # be sure to convert them to some formats other than str df.iloc[:,2:] = df.iloc[:,2:].apply(lambda x:dates<=x.data+x.nbDays)
确保将日期列转换为datetime,以使其正常工作
我使用的基本步骤是:
不要害怕在这里使用
for
循环,因为艰巨的工作是在np.where
函数中矢量化的因为列的顺序是固定的,所以可以将日期存储在列表或序列中,然后使用它生成值,如
相关问题 更多 >
编程相关推荐