我有一个包含两列和几千行的数据框。第一栏称为数字,无数值。第二列称为分钟,有时值是随机0。 我想遍历整个数据帧,将分钟数为0的数字下的所有值添加到分钟数> 0的下一行。
df = pd.DataFrame({'number' : [25,35,21,12,7,45,50,23],
'minutes' : [0,0,50,75,0,0,0,80]},
index=['2018-02-14','2018-02-15','2018-02-16','2018-02-17','2018-02-18','2018-02-19','2018-02-20', '2018-02-21'])
number minutes
2018-02-14 25 0
2018-02-15 35 0
2018-02-16 21 50
2018-02-17 12 75
2018-02-18 7 0
2018-02-19 45 0
2018-02-20 50 0
2018-02-21 23 80
期望的结果将是:
number minutes
2018-02-14 0 0
2018-02-15 0 0
2018-02-16 81 50
2018-02-17 12 75
2018-02-18 0 0
2018-02-19 0 0
2018-02-20 0 0
2018-02-21 125 80
我试图像这样越过df:
for i in range(0, len(df['minutes'])-1):
if df['minutes'][i] == 0:
value_one = df['number'][i]
value_two = df['number'][i+1]
new_value = value_one + value_two
df['number'][i+1] = new_value
df['number'][i] = 0
它可以工作,但是要花很长时间,并且我得到了SettingWithCopyWarning: 试图在DataFrame的切片副本上设置一个值。
您对我有改进的想法吗?
非常感谢