我尝试了多种解决方案,但没有一个能提供所需的输出。
我有一个数据框:
tag value
'A' 3.7
'A' 1.5
'E' 9.7
'E' 2.9
'B' -1.2
'B' 0.8
我的预期输出是一个 Numpy 数组:
array([[3.7, 1.5],
[9.7, 2.9],
[-1.2, 0.8]])
我尝试使用 groupby 并在 numpy 数组中进行转换
df.groupby(['tag']).value.apply(np.array).values
但是我得到的输出是:
array([array([3.7, 1.5]), array([9.7, 2.9]), array([-1.2, 0.8]))], dtype=object)
最佳答案
如果每组总是有相同数量的值,则可以创建嵌套列表并传递给 np.array
,同样对于相同顺序的组添加 sort=False
参数至 DataFrame.groupby
:
arr = np.array(df.groupby(['tag'], sort=False).value.apply(list).tolist())
print (arr)
[[ 3.7 1.5]
[ 9.7 2.9]
[-1.2 0.8]]
关于python - 将 pandas groupby 值转换为 numpy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63447689/