Как отсортировать строки на основе данных сопоставления столбцов с помощью Python? - PullRequest
0 голосов
/ 15 ноября 2018

У меня есть таблица, как показано ниже, и я хочу отсортировать ожидаемый результат, как показано ниже.Как выполнить с помощью Python.Таблица в формате Excel / CSV.?

enter image description here

Я хочу сопоставить данные столбца 1 с данными столбца 2 и хочу добавить новые 2 столбца (5 и 6) с отсортированными данными, как показано ниже.

enter image description here

Как выполнить вышеуказанную операцию с использованием Python?

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

Один из подходов заключается в следующем,

Создайте пустой фрейм данных и добавьте соответствующие значения столбцов в соответствии с вашей логикой

Объединить созданный информационный кадр с исходным информационным.

Я попытался использовать данные вашего примера, и вот оно:

import pandas as pd
dat = pd.read_excel(<location_to_file>) # Reading excel in to pandas
dat = pd.DataFrame(dat) # Converting to a pandas dataframe
dat1 = pd.DataFrame([])
for n in range(dat.shape[0]):
    for m in range(dat.shape[0]):
        if dat['Col1'][n] == dat['Col2'][m]:
            dat1 = dat1.append(pd.DataFrame({'Column5': dat.iloc[m][2], 'Column6': dat.iloc[m][3]}, index=[0]), ignore_index=True)
# print(dat1)
df = pd.concat([dat, dat1], axis=1)
print(df)

Ввод (как кадр данных):

  Col1 Col2     Col3  Col4
0  ABC  DEF       12  DGMN
1  PQR  MNO       17  DGSD
2  DEF  JPG   United  DGFS
3  JPG  PQR     21Hi  DFPR
4  SQL  STF      STM  DGBC
5  PQR  YZW  Hello90  DGSF
6  MNO  ABC      DQT  DGCV
7  STF  SQL     A18B  DGFD

Промежуточный / временный кадр данных:

  Column5 Column6
0     DQT    DGCV
1    21Hi    DFPR
2      12    DGMN
3  United    DGFS
4    A18B    DGFD
5    21Hi    DFPR
6      17    DGSD
7     STM    DGBC

Выход (ДФ):

  Col1 Col2     Col3  Col4 Column5 Column6
0  ABC  DEF       12  DGMN     DQT    DGCV
1  PQR  MNO       17  DGSD    21Hi    DFPR
2  DEF  JPG   United  DGFS      12    DGMN
3  JPG  PQR     21Hi  DFPR  United    DGFS
4  SQL  STF      STM  DGBC    A18B    DGFD
5  PQR  YZW  Hello90  DGSF    21Hi    DFPR
6  MNO  ABC      DQT  DGCV      17    DGSD
7  STF  SQL     A18B  DGFD     STM    DGBC

Хотя этот фрагмент можно еще улучшить для повышения производительности за счет векторизации операций. Надеюсь, это поможет вам начать.

Примечание Пожалуйста, покажите свои исследования в решении / решении проблемы, которую вы публикуете. Это побудит членов SO помочь вам.

0 голосов
/ 15 ноября 2018

Похоже, ваш вопрос пытается сделать две вещи:

  1. Считайте данные из Excel в вашу программу на Python.
  2. Манипулировать данными, когда они находятся в Python.

Для # 1 вы можете использовать что-то вроде xlrd в Python или несколько других парсеров xls (x).

Я бы начал с этого и посмотрел, сможешь ли ты получить данные в python. Это будет выглядеть примерно так:

import xlrd

# open your workbook
wb = xlrd.open_workbook('mybook.xlsx')
sh = wb.sheet_by_index(0)

# now go through the rows and do what you want with them
for x in range(sh.nrows):
    for y in range(sh.ncols):
        value = sh.cell(x,y).value
        # and do something with this value.

Я надеюсь, что вышеизложенное поможет вам начать с вышеупомянутого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...