我有一个数据集,其中包含数据时间和值作为每个 ID 的列。我对其进行了一些计算,但在使用递归函数时卡住了。
The dataset looks like this,
Date-Time Volume ID Load
10/22/2019 3862 10
10/23/2019 3800 10
10/24/2019 3700 10
10/25/2019 5000 10 Yes
10/26/2019 4900 10
10/27/2019 4800 10
10/22/2019 3862 11
10/23/2019 3800 11
10/24/2019 3700 11
10/25/2019 5000 11 Yes
10/26/2019 4900 11
10/27/2019 4800 11
The output i need for load_date is,
Date-Time Volume ID Load LoadDate
10/22/2019 3862 10 0
10/23/2019 3800 10 0
10/24/2019 3700 10 0
10/25/2019 5000 10 Yes 10/25/2019
10/26/2019 4900 10 10/25/2019
10/27/2019 4800 10 10/25/2019
10/22/2019 3862 11 0
10/23/2019 3800 11 0
10/24/2019 3700 11 0
10/25/2019 5000 11 Yes 10/25/2019
10/26/2019 4900 11 10/25/2019
10/27/2019 4800 11 10/25/2019
国际工业联合会
我们可以在 Yes 值处建立索引,并使用一些索引过滤和 .loc
assingment 向前填充任何日期。
idx = df.loc[df['Load'] == 'Yes'].index # get all index values for Yes.
df['LoadDate'] = np.nan # create your col.
df.loc[idx, 'LoadDate'] = df['Date-Time']
分组并创建你的
df['LoadDate'] = (df.groupby('ID')['LoadDate'].ffill()).fillna(0)
#group by ID and ffill the load date and fill and nan's as 0.
这给我们留下了。
print(df)
Date-Time Volume ID Load LoadDate
0 10/22/2019 3862 10 0
1 10/23/2019 3800 10 0
2 10/24/2019 3700 10 0
3 10/25/2019 5000 10 Yes 10/25/2019
4 10/26/2019 4900 10 10/25/2019
5 10/27/2019 4800 10 10/25/2019
6 10/22/2019 3862 11 0
7 10/23/2019 3800 11 0
8 10/24/2019 3700 11 0
9 10/25/2019 5000 11 Yes 10/25/2019
10 10/26/2019 4900 11 10/25/2019
11 10/27/2019 4800 11 10/25/2019
我是一名优秀的程序员,十分优秀!