Как добавить стрелку тренда в python pandas? - PullRequest
0 голосов
/ 27 января 2020

У меня есть pandas фрейм данных, который содержит некоторую команду и счет за три года. данные примерно такие:

df = pd.DataFrame({'Team': ['A', 'B', 'C', 'D'],
              '2016' : [16, 13, 15, 19],
              '2017' : [15, 16, 14, 19],
              '2018' : [13, 17, 14, 17],
              '2019' : [15, 15, 16, 19]
             })

Я хочу рассчитать ранг каждой команды в каждом году, а затем отслеживать изменение рейтинга в каждом году для команд. я хочу показать изменение в рейтинге стрелками вверх и вниз в pandas.

результат должен быть таким: result in excel

1 Ответ

1 голос
/ 27 января 2020

Вы можете использовать df.rank с df.diff() по оси = 1, затем использовать np.select с условиями и unicodes

m = df.set_index('Team') #set Team as index
n = m.rank(ascending=False,method='min').add_suffix('_rank') #get rank
a = n.diff(axis=1).iloc[:,1:].add_suffix('_trned') #take difference on axis=1
a[:] = np.select([a.lt(0),a.gt(0),a.eq(0)],[u"\u2193",u"\u2191",u"\u2192"])

final = pd.concat((m,n,a),axis=1).reset_index()

  Team  2016  2017  2018  2019  2016_rank  2017_rank  2018_rank  2019_rank  \
0    A    16    15    13    15        2.0        3.0        4.0        3.0   
1    B    13    16    17    15        4.0        2.0        1.0        3.0   
2    C    15    14    14    16        3.0        4.0        3.0        2.0   
3    D    19    19    17    19        1.0        1.0        1.0        1.0   

  2017_rank_trned 2018_rank_trned 2019_rank_trned  
0               ↑               ↑               ↓  
1               ↓               ↓               ↑  
2               ↑               ↓               ↓  
3               →               →               →
...