将groupby值转换为数组列表

时间:2018-06-21 06:00:06

标签: python pandas

这是一个示例数据框:

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'],但没有得到想要的结果。

我该如何完成?谢谢!

1 个答案:

答案 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]]