我有一个数据框df
。由2
列组成,表示矩阵M
的坐标。我将矩阵M
定义为
s = [5, 5]
M = np.zeros((s[1], s[0]))
现在我想添加计算在数据帧中调用相同单元格的次数
df
x y
0 1 4
1 0 2
3 3 1
4 4 2
5 4 2
4 2 0
我正在做的是以下内容:
for i in df.index:
M[df['x'][i]][df['y'][i]] += 1
我想以更优雅的方式进行,也许可以对pandas数据帧进行分组。
输出应生成一个数据框df1
,用于计算重复xy
次的次数,因此:
DF1
x y count
0 1 4 1
1 0 2 1
3 3 1 1
4 4 2 2
5 2 0 1
和矩阵M
M
array([[ 0., 0., 1.0, 0., 0.],
[ 0., 0., 0., 1.0, 0.],
[ 1.0, 0., 0., 0., 0.],
[ 0., 1., 0., 0., 0.],
[ 0., 0., 2., 0., 0.]])
答案 0 :(得分:0)
您可以执行以下操作并重新索引轴以覆盖缺失的值:
M = (df.groupby(['x','y'])['x']
.count()
.unstack()
.reindex(index=np.arange(df.x.max()+1),
columns=np.arange(df.y.max()+1))
.fillna(0)
.values)
输出:
[[ 0. 0. 1. 0. 0.]
[ 0. 0. 0. 0. 1.]
[ 1. 0. 0. 0. 0.]
[ 0. 1. 0. 0. 0.]
[ 0. 0. 2. 0. 0.]]