我有一个Pandas数据帧df
,如下所示:
name value
2014-01-01 temp 10.0
2014-01-01 p 101.0
2014-01-02 temp 11.5
2014-01-02 p 100.0
我想建立一个新的具有唯一索引的数据帧 每个数据有一列。在
类似df2
:
我的第一个想法是用
df2 = pd.DataFrame(index=df.index.unique(), columns=df['name'].unique())
并使用for循环来填充此数据帧
for col in df['name'].unique():
df2[col] = df[df['name']==col]['value']
但我认为熊猫可以更有效地做到这一点。在
有什么想法吗?在
正如@scls在下面的评论中指出的,当使用
pivot
对索引中有重复项的数据帧执行此操作时,pandas中可能存在一个bug。在您需要使用此处的修改版本才能使其正常工作:
编辑:下面的答案似乎不适用于索引中的重复条目,与pandas文档相比,这似乎是一个bug,pandas文档中说如果省略
index
,将使用现有索引的唯一元素。在这也是一个问题,因为在这种情况下,使用}将非常乏味,因为一个可能的索引级别已经是索引,而另一个不是。我们希望将“
set_index
后跟{name
”添加到索引中,而不需要首先从索引中弹出未命名的现有索引,这可以完成,但会导致烦人的、不可读的语法。在最初的答案是:使用} function 中提供的工具,以您想要作为类别的列为中心。在
^{pr2}$pandas.DataFrame
^{如果与索引相关的错误有问题,请尝试将索引添加为数据透视的一部分:
也可以选择直接使用function ^{} 模块顶层命名空间中的function ^{} 来完成,如:
如果您不想直接从被测数据帧调用。在
相关问题 更多 >
编程相关推荐