如何将数据框转换为另一个数据框

时间:2016-02-11 17:05:34

标签: python pandas

希望这个问题有道理。我还没能在网上找到类似的东西。

我有以下格式的大量数据:

Name  Field  Value
A     Field1 Value1
A     Field2 Value2
A     Field3 Value3
B     Field1 Value1
B     Field2 Value2
...

我想将其转换为DataFrame,例如:

Name  Field1  Field2  Field3
A     Value1  Value2  Value3
B     Value1  Value2  Value3

如果我这样做:df.pivot('Name', 'Field')我会得到一个数据透视表,其中包含"形状"我想但作为一个数据透视对象,我只想拥有一个数据帧。在我看来,枢轴是处理数字,我正在做的只是将列转换为变量,我相信可能有一个更简单的方法来做到这一点。

有些人要求提供数据:

In[224]: df = pd.DataFrame([['A','Field1', 'Value1'],['A', 'Field2', 'Value2'],['A', 'Field3', 'Value3'],['B','Field1', 'Value1'],['B', 'Field2', 'Value2'],['B', 'Field3', 'Value3'],['C','Field1', 'Value1'],['C', 'Field2', 'Value2'],['C', 'Field3', 'Value3']], columns=['Name', 'Field', 'Value'])
In[225]: df
Out[225]: 
  Name   Field   Value
0    A  Field1  Value1
1    A  Field2  Value2
2    A  Field3  Value3
3    B  Field1  Value1
4    B  Field2  Value2
5    B  Field3  Value3
6    C  Field1  Value1
7    C  Field2  Value2
8    C  Field3  Value3
In[226]: pv = df.pivot('Name', 'Field')
In[227]: pv
Out[227]: 
        Value                
Field  Field1  Field2  Field3
Name                         
A      Value1  Value2  Value3
B      Value1  Value2  Value3
C      Value1  Value2  Value3

我希望pv实际上是一个DataFrame,例如:

Name   Field1  Field2  Field3                        
A      Value1  Value2  Value3
B      Value1  Value2  Value3
C      Value1  Value2  Value3

一如既往,感谢大家的帮助!

1 个答案:

答案 0 :(得分:1)

数据本身采用您想要的格式,它只是索引和列不是您想要的格式。因此,您需要做的就是编辑列并重置索引:

pv = df.pivot('Name', 'Field')
pv.columns = [c[1] for c in pv.columns]
pv.reset_index(inplace=True)