как вставить новый столбец и sum (), и сделать увеличение, удалить уведомление в моем фрейме данных - PullRequest
1 голос
/ 19 мая 2019

у меня есть фрейм данных (df в пандах) ниже:

sector   Income Januari 2018     Income januari 2019     
1                  2000                    3000                  
1                  7000                    1000               

и я хочу вставить новый столбец с суммой ()

так что я ожидал:

sector   Income Januari 2018     Income januari 2019   increase▲/decrease▼
1                  2000                    3000           1000 ▲ (green)         
1                  7000                    1000           6000 ▼ (red)

Ответы [ 2 ]

0 голосов
/ 19 мая 2019

Вы можете установить цвет фона по стилям и экспортировать в Excel :

def color(x): 
   c1 = 'background-color: green'
   c2 = 'background-color: red'
   c = ''
   m = x['Income januari 2019'] > x['Income Januari 2018']
   df1 = pd.DataFrame(c, index=x.index, columns=x.columns)
   df1['increase▲/decrease▼'] = np.where(m, c1, c2)
   return df1

df['increase▲/decrease▼'] = df['Income januari 2019'] - df['Income Januari 2018']
print (df)
   sector  Income Januari 2018  Income januari 2019  increase▲/decrease▼
0       1                 2000                 3000                 1000
1       1                 7000                 1000                -6000

df.style.apply(color,axis=None).to_excel('styled.xlsx', engine='openpyxl', index=False)

Если нужны абсолютные значения в выходном столбце, добавьте Series.abs:

df['increase▲/decrease▼'] = (df['Income januari 2019'] - df['Income Januari 2018']).abs()
print (df)
   sector  Income Januari 2018  Income januari 2019  increase▲/decrease▼
0       1                 2000                 3000                 1000
1       1                 7000                 1000                 6000
0 голосов
/ 19 мая 2019

Попробуйте использовать следующую строку кода:

df['increase▲/decrease▼'] = (df['Income januari 2019'] - df['Income Januari 2018']).apply(lambda x: '%s ▲' % x if x > 0 else '%s ▼' % -x)

Выход будет таким, как ожидалось.

...