python - 多列数据帧到字典的快速转换
问题描述
我有以下问题。我有一个熊猫数据框,其中包含 A 到 D 列,其中 A 列和 B 列是标识符。我的最终目标是创建一个字典,其中元组 (A,B) 表示他的键,值 C 和 D 作为 numpy 数组存储在每个键下。如果我只想存储 C或D,我可以将其写在一行中,但我很难将两者都放在引擎盖下。这就是我所拥有的:
output_dict = df.groupby(['A','B'])['C'].apply(np.array).to_dict()
按预期工作,即每个键的数据是一个 dim(N,1) 数组。但是,如果我尝试以下操作:
output_dict = df.groupby(['A','B'])['C','D'].apply(np.array).to_dict()
我收到错误
TypeError: Series.name must be a hashable type
如何包含第二列,以便每个键的字典中的数据是一个暗淡(N,2)的数组。
谢谢!
解决方案
您可以创建一个新列(例如C_D
),其中包含列C
和中相应值的列表D
。从数据框中选择列C
并D
使用以下tolist()
方法:
df['C_D'] = df[['C','D']].values.tolist()
然后在该新列上运行您的代码行:
output_dict = df.groupby(['A','B'])['C_D'].apply(np.array).to_dict()
推荐阅读
- android - 在 Spinner 模式下自定义 TimePickerFragment 颜色
- ssas - 使用过滤器为另一个层次结构的每个成员计算日期层次结构上的 LIKE FOR LIKE 度量
- visual-studio-code - 如何在 VSCode 中禁用冲突的内置 Markdown 语言功能
- .net - 在 wpf .net 4.8 中从左侧堆叠内容并在右侧堆叠一个按钮
- javascript - 这个斐波那契实例中的原始 num2 是如何更新的?
- performance - 根据 gtmetrix,我的网站速度性能失败,我该如何改进它
- drupal - Drupal Commerce 为购物车添加折扣规则
- laravel - 用户个人资料图片无法在 laravel 8 中显示
- jenkins - 如何在 Jenkins 中使用 Active Choice 参数根据先前的选择输入文本或字符串值
- html - 合并 HTML 和 CSS