как преобразовать таблицу ранжирования таймсерий в индивидуальную таблицу ранжирования в pandas фрейм данных python - PullRequest
1 голос
/ 09 июля 2020

, например, таблица рейтинга

time/rank  1  2  3
   1       a  b  c
   2       b  c  a

, и я хочу преобразовать это в индивидуальный рейтинг по времени

time/individual a  b  c
    1           1  2  3
    2           3  1  2

с pandas фреймом данных, код ниже ..

ranktable = pd.DataFrame([{
    'time': 1,
    1: 'a',
    2: 'b',
    3: 'c'
},{
    'time': 2,
    1: 'b',
    2: 'c',
    3: 'a'
}])

resultIWant = pd.DataFrame([{
    'time': 1,
    'a': 1,
    'b': 2,
    'c': 3
}, {
    'time': 2,
    'a': 3,
    'b': 1,
    'c': 2
}])

есть ли простой способ конвертировать?

Ответы [ 2 ]

1 голос
/ 09 июля 2020

Используйте pandas.DataFrame.apply:

new_df = ranktable.set_index("time").apply(lambda x: pd.Series(x.index, index=x), 1)
print(new_df)

Вывод:

      a  b  c
time         
1     1  2  3
2     3  1  2
1 голос
/ 09 июля 2020

Используйте DataFrame.melt с DataFrame.pivot:

df = (ranktable.melt('time')
               .pivot('time','value','variable')
               .rename_axis(None, axis=1)
               .reset_index())
print (df)
   time  a  b  c
0     1  1  2  3
1     2  3  1  2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...