这是一个示例数据框:
label data
a 1.09
b 2.1
a 5.0
b 2.0
c 1.9
我想要的是
arr = [[1.09, 5.0], [2.1, 2.0],[1.9]]
最好是numpy数组的列表。
我知道df.groupby.groups.keys()
为我提供了列表['a','b','c']
,而df.groupby.groups.values()
给了我类似arr
的东西,但是却是Int64Index
的对象。但是,我尝试了df.loc[df.groupby.groups.values()]['label']
,但没有得到想要的结果。
我该如何完成?谢谢!
答案 0 :(得分:2)
最好是numpy数组的列表。
最好不要这样,因为您要的是参差不齐的数组,这意味着内部数组(又名行)的长度并不相同。这对于numpy来说很不方便,这意味着它无法在内部将这些数组有效地存储为C数组。最终回到缓慢的python对象上。
在这种情况下,我建议嵌套python列表。这可以通过groupby
+ apply
来实现。
lst = df.groupby('label')['data'].apply(pd.Series.tolist).tolist()
print(lst)
[[1.09, 5.0], [2.1, 2.0], [1.9]]