Изменение формы фрейма данных не показывает все столбцы - PullRequest
0 голосов
/ 04 мая 2020

У меня есть фрейм данных, который я прочитал из файла Excel с объединенными ячейками. Фрейм данных выглядит следующим образом:

Содержимое фрейма данных

wi sh, чтобы преобразовать фрейм данных из длинного в широкий, чтобы он был таким: Reshape требуемая структура

Я использую сводку в качестве следующего кода:

df1 = df.pivot_table(
    values='Answers',
    index=['Date', 'ID'],
    columns='Questions'
    )

# Formatting.
df1.reset_index(inplace=True)
df1.columns.name = None

Но во фрейме данных после сводки отображается только первый столбец в виде следующего изображения: Данные кадр после разворота

Есть идеи почему?

1 Ответ

0 голосов
/ 04 мая 2020

Проблема в том, что pandas (все NaNs) неправильно понимает ваш индекс.

Чтобы решить эту проблему, необходимо сначала распространить значения в столбце Date, чтобы заполнить NaN, как здесь уже ответили: Pandas: чтение Excel со слитыми ячейками .

>>> df = pd.DataFrame({"Date": ["2020-01-01", np.nan, np.nan, "2020-01-02", np.nan, np.nan], "Question": ["Q1", "Q2", "Q3", "Q1", "Q2", "Q3"], "Value": [1, 2, 3, 4, 5, 6]})
>>> df
         Date Question  Values
0  2020-01-01       Q1       1
1         NaN       Q2       2
2         NaN       Q3       3
3  2020-01-02       Q1       4
4         NaN       Q2       5
5         NaN       Q3       6
>>> df["Date"].fillna(method="ffill", inplace=True)  # Fill Date column
>>> df
         Date Question  Values
0  2020-01-01       Q1       1
1  2020-01-01       Q2       2
2  2020-01-01       Q3       3
3  2020-01-02       Q1       4
4  2020-01-02       Q2       5
5  2020-01-02       Q3       6
>>> # Now you can pivot normally
>>> df1 = df.pivot_table(index="Date", values="Value", columns="Question")
>>> df1.reset_index(inplace=True)
>>> df1.columns.name = None
>>> df1
         Date  Q1  Q2  Q3
0  2020-01-01   1   2   3
1  2020-01-02   4   5   6

Надеюсь, это поможет;)

...