这是一个示例数据框:
label data
a 1.09
b 2.1
a 5.0
b 2.0
c 1.9
Run Code Online (Sandbox Code Playgroud)
我想要的是
arr = [[1.09, 5.0], [2.1, 2.0],[1.9]]
Run Code Online (Sandbox Code Playgroud)
最好是一个 numpy 数组列表。
我知道这df.groupby.groups.keys()给了我列表['a','b','c'],并df.groupby.groups.values()给了我类似的东西arr,但作为一个Int64Index对象。但是,我试过了df.loc[df.groupby.groups.values()]['label'],并没有得到想要的结果。
我该如何实现?谢谢!
最好是一个 numpy 数组列表。
最好不要,因为您要求的是ragged arrays,这意味着内部数组(AKA,行)的长度不同。这对 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]]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3073 次 |
| 最近记录: |