Переформатирование pandas таблицы - я хочу разворот? - PullRequest
1 голос
/ 24 января 2020

Я уверен, что это довольно просто, но мой мозг заморожен и существует так много разных pivot и transpose методов. Подсказка была бы хороша на этом этапе.

У меня есть этот фрейм данных:

current datafame

Я хочу это:

dsied dataframe

Я знаю, как сюда добраться, если это помогло, но я не уверен, что это так

interim datafame

К вашему сведению - Фактические данные имеют больше столбцов, и мне нужно разделить эти четыре столбца на основе столбца «site», переформатировать все, вычислить некоторые проценты, собрать части обратно и в конечном итоге получить что-то вроде этого:

final table

Я надеюсь, что если я смогу встать на правильный путь для переформатирования части данных, я могу повторить процесс ...

(тогда мне нужно выяснить, как запустить тест хи-квадрат, но это на потом ... :-(

1 Ответ

3 голосов
/ 24 января 2020

Самое простое разрешение: df.stack:

df = pd.DataFrame({'MIC-m': [138, 3, 22, 45],
                   'MIC-t': [34, 90, 30, 53],
                   'MIC-q': [73, 13, 53, 68],
                   'Total': [229, 229, 229, 229]}, index=['H', 'L', 'M', 'X'])

# Drop total, because we need sum of columns, not rows
df.drop(columns='Total', inplace=True)

# Get final result
df = pd.DataFrame(df.append(df.sum().rename('Total')).T.stack(), columns=['count'])

Выход:

             count
MIC-m H        138
      L          3
      M         22
      X         45
      Total    208
MIC-t H         34
      L         90
      M         30
      X         53
      Total    207
MIC-q H         73
      L         13
      M         53
      X         68
      Total    207
...