Как определить функцию для стиля Pandas для сравнения значения выбранного столбца со значением ниже строки (выделение фона) - PullRequest
0 голосов
/ 25 сентября 2019

Я хотел бы определить функцию для стиля Pandas, чтобы сравнивать значение выбранного столбца со значением ниже строки (выделение фона)

Мой набор данных похож на приведенный ниже.Четная строка - это новый элемент, а нечетная строка - старый элемент для сравнения.Итак, я хотел бы раскрасить фон только для новой строки, где ATTR отличается от правой следующей строки.

data1 = {'S_ITEMCODE':['', '81527800', '', '81527900'],
        'N':['N', '','N', ''],
        'ITEMCODE':['81527800', '81320323', '81527900', '81267337'],
        'DESC':['Store Brand (Woongjin) SB Fresh Orange Drink Orange NO P.BTL 1.5lit', 'Store Brand (Woongjin) SB Fresh Orange Drink Orange NO P.BTL 1lit', 'Store Brand (Woongjin) SB Fresh Jeju Tang. Drink Tang. NO P.B 1.5lit', 'Store Brand (Woongjin) SB Fresh Jeju Tang. Drink Tang. NO P.B 1lit'],
        'ATTR1':['1A', '1A', '1B', '1B'],
        'ATTR2':['1A', '1C', '1B', '1B'],
        'ATTR3':['1A', '1A', '1B', '1B'],
        'ROW_INDEX_SIMILAR_ITEM':[1, -1, 1, 1]}
        'ATTR_MATCHING_RATE':[2/3, '', 1, '']}

df = pd.DataFrame(data1)

Это код, который я написал для фона окраски.

uomlistns = pd.DataFrame(dfns.columns, columns=['Col'])
           uomns = uomlistns[uomlistns['Col'].str.contains('-')].index.tolist()
           tested_col_a = dfns.columns[(uomns[-1]+1):dfns.columns.get_loc("sim_1")]
           tested_col_mb= dfns.columns[9:13]
           attr_col = tested_col_a.union(tested_col_mb)

def highlight_diff(??):
          return ['background-color: yellow'  if ((dfns.iloc[::2]['N'] == 'N') & (dfns[col] != dfns[col].shift(-1)) == True else '' for col in attr_col:

dfns.to_excel('styled.xlsx', engine='openpyxl')

Я действительно ценю вашу идею.Большое спасибо

...