我有一个类似的数据框:
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
我希望将' 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'循环,这样如果有两个以上的连续类型,我可以更轻松地处理数据'贸易'数据
答案 0 :(得分:1)
如果你想在迭代时编辑一个iterable,它通常更安全地处理循环内的数据副本,然后用更新的副本替换原始副本。这避免了Python对它在迭代中的位置感到困惑(这是你的错误中似乎暗示的问题,因为它抱怨索引)。