excel文件上python的简单操作

excel文件上python的简单操作,python,excel,subtraction,operation,pyexcel,Python,Excel,Subtraction,Operation,Pyexcel,x,y,粒子 23,25,0 12,15,0 54,45,0 32,11,1 21,43,1 43,11,1 excel中有3列的输出。第一列x,第二列y,第三列ID。如果粒子具有相同的标识号(ID),我想减去具有相同ID号的粒子的x和y。比如, 对于ID为0的列,我希望它: 对于x,应为 23-12=11 11-54=-43 因为你应该是 25-15=10 10-45=-35 这是我为它写的代码。对于相同的ID号,第一个可以正常工作,但在第二个循环中我得到了一个范围错误。有什么问题吗。我该怎么

x,y,粒子

23,25,0

12,15,0

54,45,0

32,11,1

21,43,1

43,11,1

excel中有3列的输出。第一列x,第二列y,第三列ID。如果粒子具有相同的标识号(ID),我想减去具有相同ID号的粒子的x和y。比如,

对于ID为0的列,我希望它:

对于x,应为
23-12=11
11-54=-43

因为你应该是

25-15=10

10-45=-35

这是我为它写的代码。对于相同的ID号,第一个可以正常工作,但在第二个循环中我得到了一个范围错误。有什么问题吗。我该怎么修理

从pyexcel\u ods导入获取数据,保存数据

# -*- coding: utf-8 -*-

data = get_data("deneme.ods")

s,extract=0,0

for i in range(len(data[u'Sheet1'])-2):
if data[u'Sheet1'][i][2]==data[u'Sheet1'][i+1][2]:
    s+=1
    continue
else:
    for j in range(s+1):
        extract -= data[u'Sheet1'][j][1]
        extract = abs(extract)
    data[u'Sheet1'][i].append(extract)
    extract=0
    s=0

保存数据('deneme1.ods',data)

如果可以将文件加载到数据帧中,则可以这样做

import pandas as pd
from operator import sub
from functools import reduce

d = [["x", "y", "particle"], [23, 25, 0],[12, 15, 0], [54, 45, 0], [32, 11, 1], [21, 43, 1], [43, 11, 1]]

df = pd.DataFrame(d[1:], columns=d[0])

my_sub = lambda e: reduce(sub, e)

df2 = df.pivot_table(index = "particle", values=["x", "y"], aggfunc=my_sub)
print(df2)

你能用熊猫吗?如果是,请查看groupby方法。库并不重要。这里的算法很麻烦,非常感谢。看起来熊猫的工作速度更快,产量也更稳定。是的,熊猫是在numpy的基础上建造的,大部分是用C写的。很高兴能帮助你。