простые операции с питоном в файле Excel - PullRequest
0 голосов
/ 07 октября 2019

x, y, частица

23, 25, 0

12, 15, 0

54, 45, 0

32, 11, 1

21, 43, 1

43, 11, 1

Выход в 3 столбца в Excel. Первый столбец x, второй столбец y, идентификатор третьего столбца. Если частицы имеют одинаковый идентификационный номер (ID), я хочу вычесть x и y частиц с одинаковым идентификационным номером. например;

Для столбцов с ID = 0 я хочу, чтобы это было:

для x должно быть
23-12 = 11
11-54 = -43

для y должно быть

25-15 = 10

10-45 = -35

Вот код, который я написал для него. Первый работает правильно для тех же идентификационных номеров, но я получаю ошибку диапазона во 2-м цикле. В чем может быть проблема. Как я могу исправить.

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', data)

1 Ответ

0 голосов
/ 09 октября 2019

если вы можете загрузить свой файл в информационный фрейм, вы можете сделать это следующим образом.

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...