当前位置: 首页 > 知识库问答 >
问题:

在熊猫中将一行转换为列

阴元青
2023-03-14

请考虑下表:对于每个代码,每一个状态都有一些值。

现在我想以这样的方式转置表,使成为列:

我不能让它工作,只转置那个特定的列。

在熊猫身上实现这一目标的好办法是什么?

共有2个答案

宋志学
2023-03-14

你要找的是pd.melt

我们可以结合应用自定义索引来使用它

df1 = pd.melt(df,id_vars=['Year','Age'],var_name=['State'])

out = df1.set_index([df1.groupby(['Year']).cumcount(),'Year','State','Age'])\
                  .unstack('Year').droplevel(0,1).reset_index([1,2])
Year   State  Age  2010  2011
0     State1    1   123   444
1     State1    2   111   777
2     State2    1   456   555
3     State2    2   222   888
4     State3    1   789   666
5     State3    2   333   999
席俊驰
2023-03-14

您可以堆叠和卸载您的数据帧:

out = (
    df.set_index(["Age", "Year"])
    .stack()
    .unstack("Year")
    .reset_index()
    .rename(columns={"level_1": "State"})
)

Year  Age   State  2010  2011
0       1  State1   123   444
1       1  State2   456   555
2       1  State3   789   666
3       2  State1   111   777
4       2  State2   222   888
5       2  State3   333   999
 类似资料:
  • 我有一个字段在熊猫DataFrame被导入为字符串格式。它应该是日期时间变量。如何将其转换为日期时间列,然后根据日期进行筛选。 示例: 数据帧名称:原始数据

  • 问题内容: 我已经读过一个对Pandas的SQL查询,并且值以dtype’object’的形式出现,尽管它们是字符串,日期和整数。我能够将日期“ object”转换为Pandas datetime dtype,但是在尝试转换字符串和整数时遇到错误。 这是一个例子: 将转换为日期时间可以: 但是尝试将转换为整数时出现错误: 注意:我尝试时遇到类似的错误 当尝试转换为字符串时,似乎什么也没有发生。 问

  • 我有以下布尔值表: 我想创建一个具有相同索引的新数据帧,但每行都有前一列的前三个 True 列名。 如果一行少于三个真值,则新数据帧将具有空值。

  • 问题内容: 我有一个带有ID号的大型数据框: 这些现在都是字符串。 我想转换为不使用循环-为此我使用。 问题是我的某些行包含无法转换为的脏数据,例如 如何(不使用循环)删除这些类型的事件,以便我可以放心使用? 问题答案: 您需要向功能添加参数: 如果是列: 但非数字会转换为,因此所有值都是。 对于需要转换到一些值,例如,然后转换为: 样品: 编辑:如果使用0.25+大熊猫,则可以使用:

  • 问题内容: 我对熊猫有些陌生。我有一个熊猫数据框,它是1行乘23列。 我想将其转换为系列吗?我想知道最pythonic的方法是什么? 我试过了,但是抱怨。它不够聪明,无法意识到它仍然是数学上的“向量”。 谢谢! 问题答案: 它不够聪明,无法意识到它仍然是数学上的“向量”。 可以说它足够聪明,可以识别尺寸差异。:-) 我认为您可以做的最简单的事情是使用位置选择该行,这将为您提供一个Series,其列

  • 我对熊猫有些陌生。我有一个熊猫数据框,是一行23列。 我想把它转换成一个系列?我想知道做这件事最像蟒蛇的方式是什么? 我试过pd。系列(我的结果),但它抱怨。它还没有聪明到意识到它仍然是数学术语中的“向量”。 谢谢!