2013-04-28 63 views
4

我有结构为csv文件:去正规化csv文件/数据帧的大熊猫

Location Parameter 

A   10 
A   20 
B   14 
B   16 
C   15 
C    9 
C    6 

我可以很容易地在同一个read_csv数据框得到这个。我想使用python/pandas来转换数据帧,以获取每个A,B,C的列,并用相应的参数填充值,例如,

A B  C 
10 14 15 
20 16 9 
NA NA 6 

最终目的是在数据框上做boxplot。

在此先感谢。

回答

3

我不能打在右旋转/堆叠方法 - 其他人很可能会拿出正确的方式 - 所以我对groupby回落:

>>> df 
    Location Parameter 
0  A   10 
1  A   20 
2  B   14 
3  B   16 
4  C   15 
5  C   9 
6  C   6 
>>> cd = {k: v.reset_index(drop=True) for k,v in df.groupby("Location")["Parameter"]} 
>>> pd.DataFrame(cd) 
    A B C 
0 10 14 15 
1 20 16 9 
2 NaN NaN 6 
+0

如果它让你感觉更好,我没能堆叠要么工作... – tshauck 2013-04-29 02:08:33

+0

奇怪,我觉得这非常符合在'pivot'例子[该文档](http://pandas.pydata.org/pandas-docs/stable/reshaping.html),但我继续ge tting AssertionError('索引的长度,列和值必须相同')。 – herrfz 2013-04-29 14:09:48

0

为了使箱线图,该GROUPBY的结果就足够了:

grouped = data.groupby('Location') 
grouped.boxplot(subplots=False) 
+0

这实际上是否产生了正确的结果?对我来说,它给出了一个七行数据帧,而不是三行。 – DSM 2013-05-04 19:21:10

+0

@DSM啊,是的。你是对的。编辑答案。谢谢指出。 – fixxxer 2013-05-06 07:49:20