Python 2.7 熊猫中的长到宽数据帧,在新列中具有透视列名
我已经搜索了很多次,但我似乎找不到适合我的特定问题的pivot功能。我将用一个简单的例子来说明我在寻找什么: 长桌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
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()