【发布时间】:2019-04-30 17:30:01
【问题描述】:
我有一个数据框,其中包含 500K 行和 7 列的天数,包括开始日和结束日。
我在 range(startDay, endDay) 中搜索一个值(比如等于 0)
比如对于 id_1,startDay=1,endDay=7,所以,我应该求一个值 D1 到 D7 列。
对于 id_2、startDay=4 和 endDay=7,因此,我应该寻找 D4 到 D7 列的值。 但是,我无法成功寻找不同的列范围。
以上,
- 如果 startDay > endDay,我应该看到“-999”
否则,我需要找到第一个零(考虑日期范围),例如对于 id_3,D2 列中的第一个零(第 2 天)。 id_3 的 starDay 是 1。我想看看,2-1=1 (D2 - StartDay)
如果找不到0,我想看“8”
这是我的数据;
data = {
'D1':[0,1,1,0,1,1,0,0,0,1],
'D2':[2,0,0,1,2,2,1,2,0,4],
'D3':[0,0,1,0,1,1,1,0,1,0],
'D4':[3,3,3,1,3,2,3,0,3,3],
'D5':[0,0,3,3,4,0,4,2,3,1],
'D6':[2,1,1,0,3,2,1,2,2,1],
'D7':[2,3,0,0,3,1,3,2,1,3],
'startDay':[1,4,1,1,3,3,2,2,5,2],
'endDay':[7,7,6,7,7,7,2,1,7,6]
}
data_idx = ['id_1','id_2','id_3','id_4','id_5',
'id_6','id_7','id_8','id_9','id_10']
df = pd.DataFrame(data, index=data_idx)
我想看的;
df_need = pd.DataFrame([0,1,1,0,8,2,8,-999,8,1], index=data_idx)
【问题讨论】:
-
您能解释一下为什么
id_1在df_need中的值为1? -
id_1 startDay=1 和 endDay=7。因此,我们应该查看 D1 到 D7 列。在 D1 = 0。这是我们的第一个 0。D1=第 1 列,startDay=1。所以,1-1=0
-
startday = 4。所以请检查您的预期输出
-
如果 id_1 的 startDay=4,我们应该看 D4 到 D7(endDay=7) 并且第一个 0 是 D5 (range=D4 toD5)。所以,5-4=1(输出)。
标签: python-3.x pandas numpy