我有一个包含10列的数据框架。第一列包含一些日期。其他9列的标题是其他一些日期。这9列的值都预先设置为0。
我想比较第一列中的日期值与其他9列的每个标题的值,如果满足某个条件,则将值从0更改为1。例如,如果第一列中的日期在每个标题日期之前的5年期间内,则将值从0更改为1。示例如下:
开始dataframe:
<表类>日期 04 - 2月- 94 31 - 1月- 96 19日- 8月- 97 18-Apr-01 tbody><<tr>07/26/90 0 0 0 0 05/08/95 0 0 0 0 03/10/98 0 0 0 0 表类>
好吧,让我们开始吧!
1。首先,您需要转换"列名"。(header)转换为日期格式(别名时间戳),如下所示:
df.columns = df.columns[:1].tolist() + pd.to_datetime(df.columns[1:]).tolist()
1.1然后,您必须转换列"日期"。日期格式too:
df.date = pd.to_datetime(df.date)
2。现在我们可以使用for循环进行第12次比较(列43行*),同时在匹配条件时相应地更新单元格值:
for i in df.columns[1:]:
for j in range(len(df.date)):
if df.date[j] < i < (df.date[j] + pd.offsets.DateOffset(years=5)):
df.at[j, i] = 1
3。输出:
<表类>指数 日期 1994-02-04就是 1996-01-31就是 1997-08-19就是 2001-04-18就是 tbody><<tr>0 1990-07-26就是 1 0 0 0 11995-05-08就是 0 1 1 0 21998-03-10就是 0 0 0 1 表类>