python 对 excel 文件的简单操作
simple operations with python on excel file
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
y 应该是
25-15=10
10-45 = -35
这是我为它编写的代码。第一个对于相同的 ID 号可以正常工作,但我在第二个循环中遇到范围错误。可能是什么问题呢。我该如何解决。
from pyexcel_ods import get_data,save_data
# -*- 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
save_data('deneme1.ods',数据)
如果您可以将文件加载到数据框中,您就可以这样做。
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)
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
y 应该是
25-15=10
10-45 = -35
这是我为它编写的代码。第一个对于相同的 ID 号可以正常工作,但我在第二个循环中遇到范围错误。可能是什么问题呢。我该如何解决。
from pyexcel_ods import get_data,save_data
# -*- 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
save_data('deneme1.ods',数据)
如果您可以将文件加载到数据框中,您就可以这样做。
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)