Стиль Python Pandas - PullRequest
       2

Стиль Python Pandas

0 голосов
/ 02 мая 2018

Я пытаюсь изменить цвет шрифта строк в df1, которые есть в df3 в Pandas. Мои наборы данных:

df1 = [ "i like to shop at store a." , "he likes to shop at the store b.", "she is happy to shop at store c.", 'we want to shop at the store d.']
df2 = [ "store a", "store b", "store c", 'store d' ]
df3 = [ "like to", "likes to shop", "at store" ]

myDataSet = list(zip(df1,df2))
df = pd.DataFrame(data = myDataSet, columns=['df1', 'df2'])

Чтобы изменить цвет строк в df1, я использую следующее, но получаю неверную синтаксическую ошибку. Пожалуйста, помогите.

def color_negative_red(df1):
    x for x in df3 if x in df["df1"]
    return 'color: %s' % color
s = df.style.applymap(color_negative_red)
s

1 Ответ

0 голосов
/ 02 мая 2018

Используйте границу слова для проверки подстрок с помощью contains и возврата DataFrame of style s:

def color_substrings(x):
    c1 = 'background-color: red'
    c2 = '' 
    pat = '|'.join([r'\b{}\b'.format(x) for x in df3])
    mask = df["df1"].str.contains(pat)
    df1 =  pd.DataFrame(c2, index=df.index, columns=df.columns)
    #modify values of df1 column by boolean mask
    df1.loc[mask, 'df1'] = c1
    return df1

df.style.apply(color_substrings, axis=None)

pic

Примечание - если вы хотите выбрать только подстроки, это пока не поддерживается.

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