python while循环结合并删除重复的行

时间:2017-09-08 09:11:45

标签: python numpy

我有一个类似的数据框:

 Type:  Volume: Date:     Price:....
 Q     10      2016.6.1   10
 Q     20      2016.6.1   20
 T     10      2016.6.2 
 Q     10      2016.6.3
 T     20      2016.6.4
 T     20      2016.6.5
 Q     10      2016.6.6

here is the full dataframe

我希望将' volume'的值加起来。只有两个(或更多)Ts是连续的并删除其中一个

即。致:

 Q     10      2016.6.1
 Q     20      2016.6.1 
 T     10      2016.6.2 
 Q     10      2016.6.3
 T     20+20=40 2016.6.4
 Q     10      2016.6.6

现在我正在使用if循环:

l = len(df)
Volume = df['Volume']
Type = df['Type']

for i in range(2,l-1):
    if Type[i] == 'Trade':
        if Type[i] == 'Trade' and Type[i+1] == 'Trade' :     
            Volume[i] = Volume[i]+Volume[i+1]
            df = np.delete(fd, (i), axis=0)

然而,我收到一个错误:

ValueError: Shape of passed values is (8, 303540), indices imply (8, 303541)

此外,我想更改“如果'循环到' while'循环,这样如果有两个以上的连续类型,我可以更轻松地处理数据'贸易'数据

1 个答案:

答案 0 :(得分:1)

如果你想在迭代时编辑一个iterable,它通常更安全地处理循环内的数据副本,然后用更新的副本替换原始副本。这避免了Python对它在迭代中的位置感到困惑(这是你的错误中似乎暗示的问题,因为它抱怨索引)。