Попытка игнорировать нулевые значения в столбце Excel - PullRequest
0 голосов
/ 05 февраля 2019

Ожидаемый результат В электронной таблице Excel, над которой я работаю, есть два интересующих столбца, столбец B и столбец E. В столбце B есть несколько значений 0, и они переносятся в столбец Eоснованный на цикле, который я выполняю относительно столбца D. Я хочу написать скрипт Python, чтобы игнорировать эти 0 и выбрать следующее наибольшее значение на основе их частот в столбце E.

           12NC ModifiedSOCwrt12NC              SOC
0  232270463903                  0                0
1  232270463903                  0                0
2  232270463903                  0                0
3  232270463903                  0                0
4  232270463903                  0  RC0603FR-0738KL
5  232270463903                  0  RC0603FR-0738KL
6  232270463903                  0  RC0603FR-0738KL

Я хочузапустить цикл, который выбирает ненулевые значения из SOC (столбец B) и переносит его в ModifiedSOCwrt12NC (столбец E) на основе уникальных значений в столбце D.

Например, столбец B имеет значения = [0, RCK2] в нескольких строках, которые основаны на уникальных значениях в столбце D. Таким образом, текущий цикл выбирает максимальное вхождение значений в столбце B и заполняет его в столбце E. Если существует связь между вхождениями 0 и RCK2, он выбирает0 согласно стандарту ASCII (чего я не хочу, чтобы произошло).Я хочу, чтобы код выбрал RCK2 и заполнил их в столбце E.

1 Ответ

0 голосов
/ 05 февраля 2019

Поскольку ваши данные недоступны, я создал тестовые данные, аналогичные приведенным ниже -

enter image description here

Мы можем читать данные в пандах -

import pandas as pd

df = pd.read_excel("ExcelTemplate.xlsx")
df

Index   SOC Index2  12NC
0   YXGMY   0   ZJIZX   23445
1   NQHQC   0   JKJKT   23445
2   MWTLY   0   EFCYD   23445
3   RPQFE   AC  VLOJZ   23445
4   GPLUQ   AC  AKKKG   23445
5   WGYYM   AC  DSMLO   23445
6   XGTAQ   0   ZHGWS   45667
7   AMWDT   0   YROLO   45667

следующий код выполнит суммирование -

  1. Сначала суммируйте данные по 12NC и SOC и возьмите счет
  2. Сортируйте по 12NC, количеству и SOC, с наибольшимсчитать первым
  3. Принимать первое значение SOC для каждого 12NC
  4. Объединять с исходными данными для создания столбца E
  5. Экспорт обратно в Excel
df1 = df.groupby(['12NC', 'SOC'])['Index'].count().reset_index()
df = df.merge(df1[df1['SOC']!=0].sort_values(by=['12NC', 'Index', 'SOC'], ascending=[True, False, True])\
         .drop_duplicates(subset=['12NC'], keep='first')[['12NC', 'SOC']].\
         rename(index=str, columns={'SOC': 'ModifiedSOCwrt12NC'}),\
         on = ['12NC'], how='left')
df.to_excel("ExcelTemplate_modifies.xlsx", index=False)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...