如何基于同一数据框内另一个系列的值更新系列的值

时间:2019-06-12 07:59:18

标签: python pandas

我有一个包含两列和几千行的数据框。第一栏称为数字,无数值。第二列称为分钟,有时值是随机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的切片副本上设置一个值。

您对我有改进的想法吗?

非常感谢

0 个答案:

没有答案