繁体   English   中英

重塑数据框不显示所有列

[英]Reshape data frame doesn't show all columns

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

数据框内容

希望将数据框从长到宽重塑为: 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 之后的数据帧只显示第一列,如下图: pivot 之后的数据帧

知道为什么吗?

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

为了解决这个问题,您需要首先传播 Date 列中的值以填充 NaN,正如此处已回答的那样: Pandas: Reading Excel with merge 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

希望能帮助到你;)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM