【问题标题】:Reshape data frame doesn't show all columns重塑数据框不显示所有列
【发布时间】:2020-08-18 13:23:01
【问题描述】:

我有一个从包含合并单元格的 Excel 文件中读取的数据框。数据框如下所示:

Data frame content

希望将数据框从长变为宽,如下所示: Reshape required structure

我正在使用 pivot 作为以下代码:

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

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

但是pivot之后的数据框只显示第一列,如下图: Data frame after pivot

知道为什么吗?

【问题讨论】:

    标签: python dataframe pivot reshape


    【解决方案1】:

    问题是熊猫(所有的 NaN)没有正确理解您的索引。

    要解决这个问题,您需要首先传播 Date 列中的值以填充 NaN,此处已回答:Pandas: Reading Excel with merged cells

    >>> 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
    

    希望对你有帮助;)

    【讨论】:

      猜你喜欢
      • 2021-06-13
      • 1970-01-01
      • 2021-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-15
      • 2013-01-27
      相关资源
      最近更新 更多