在Python中需要一些关于数据聚合的帮助。
我有一个包含3列和N行的Dataframe。前两列包含索引(让它为X
和Y
),最后一列包含值。任务是计算sum()
第三列[与(x_i,y_j)
对应]的值,并将其写入(x_i,y_j)
或者,更简单,转换:
ind1 ind2 value
x1 y1 k1
x2 y1 k2
x3 y1 k3
x1 y2 k4
x2 y2 k5
x3 y2 k6
进入某种2d大规模的
y1 y2
________
x1 |k1 k4
x2 |k2 k5
x3 |k3 k6
我已经尝试了pandas.groupby
,但没有找到合适的解决方案。那么,我该怎么办?
答案 0 :(得分:2)
您想要透视数据。例如:
In [5]: data = {'ind1': ['x1','x2','x3','x1','x2','x3'],
'ind2': ['y1','y1','y1','y2','y2','y2'],
'value': ['k1','k2','k3','k4','k5','k6']}
In [6]: pd.DataFrame(data=data)
Out[6]:
ind1 ind2 value
0 x1 y1 k1
1 x2 y1 k2
2 x3 y1 k3
3 x1 y2 k4
4 x2 y2 k5
5 x3 y2 k6
In [9]: df.pivot(index='ind1', columns='ind2', values='value')
Out[9]:
ind2 y1 y2
ind1
x1 k1 k4
x2 k2 k5
x3 k3 k6
您可以在此处找到更多信息:http://pandas.pydata.org/pandas-docs/stable/reshaping.html