Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 熊猫中的长到宽数据帧,在新列中具有透视列名_Python 2.7_Pandas - Fatal编程技术网

Python 2.7 熊猫中的长到宽数据帧,在新列中具有透视列名

Python 2.7 熊猫中的长到宽数据帧,在新列中具有透视列名,python-2.7,pandas,Python 2.7,Pandas,我已经搜索了很多次,但我似乎找不到适合我的特定问题的pivot功能。我将用一个简单的例子来说明我在寻找什么: 长桌 dependent_variable step a b 5.5 1 20 30 5.5 2 25 37 6.1 1 22 19 6.1 2 18 29 所需宽桌 dependent_variable a_step1 a_s

我已经搜索了很多次,但我似乎找不到适合我的特定问题的pivot功能。我将用一个简单的例子来说明我在寻找什么:

长桌

dependent_variable  step a  b
         5.5          1  20 30
         5.5          2  25 37
         6.1          1  22 19
         6.1          2  18 29
所需宽桌

dependent_variable   a_step1 a_step2 b_step1  b_step2
         5.5            20       25      30       37
         6.1            22       18      19       29
实际上,我希望以步骤列为中心,并使其余自变量(在本例中为a和b)的列名包括步骤编号和与之关联的a/b值

数据透视后,我将使用因变量列和作为numpy数组和新数据透视的因变量输入各种机器学习算法

当我尝试piRSquared的建议(谢谢)时,我得到了一个错误:索引包含重复的条目,无法重塑

然后我试着(从)

并且(使用示例表)得到以下结果:

level_0   dependent_variable a_step1 a_step2 b_step1 b_step2
  1               5.5           20      NaN    30       NaN
  2               5.5           NaN     25     NaN      37
  3               6.1           22      NaN    19       NaN
  4               6.1           NaN     18     NaN      29

因此,我仍然缺少一个步骤

假设数据帧的名称是
df
因变量
步骤
不在索引中

d1 = df.set_index(['dependent_variable', 'step']).unstack()
d1.columns = d1.columns.map(lambda x: '{}_step{}'.format(*x))
d1.reset_index(inplace=True)

print(d1)

   dependent_variable  a_step1  a_step2  b_step1  b_step2
0                 5.5       20       25       30       37
1                 6.1       22       18       19       29

看起来你在找pd pivot

如果省略了values参数,并且输入数据框中有多列值未用作数据透视的列或索引输入,则生成的“数据透视”数据框将具有层次结构列,其最顶层表示相应的值列-

屈服

        a       b
step    1   2   1   2
dependent_variable              
5.5     20  25  30  37
6.1     22  18  19  29
它有一个层次索引,这可能比您指定的输出更有帮助。但是,您可以通过以下方式更改为单列索引:

df.columns = df.columns.tolist()

这些列没有您想要的确切名称,但您可以重命名。

其他人可能理解您的意图,但我不理解。除非你能更好地展示你所拥有的,你想要的,以及你已经尝试过的,否则我就不再试图回答这个问题。我猜其他人也会有类似的感觉。阅读、和,以更好地了解如何最大限度地提高问题的答案。感谢您的反馈,最新的修订版更有意义吗?@chemnteach,已经有一段时间了,希望您仍然知道。您是如何解决整个表中的
NaN
?我在这篇文章中尝试了所有的解决方案,但都无法修复。可能是命令或命令出错或类似的情况。谢谢piRSquared,很接近。请参见上面编辑的问题。
        a       b
step    1   2   1   2
dependent_variable              
5.5     20  25  30  37
6.1     22  18  19  29
df.columns = df.columns.tolist()