希望这个问题有道理。我还没能在网上找到类似的东西。
我有以下格式的大量数据:
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
一如既往,感谢大家的帮助!
答案 0 :(得分:1)
数据本身采用您想要的格式,它只是索引和列不是您想要的格式。因此,您需要做的就是编辑列并重置索引:
pv = df.pivot('Name', 'Field')
pv.columns = [c[1] for c in pv.columns]
pv.reset_index(inplace=True)