首页 > 解决方案 > 多列数据帧到字典的快速转换

问题描述

我有以下问题。我有一个熊猫数据框,其中包含 A 到 D 列,其中 A 列和 B 列是标识符。我的最终目标是创建一个字典,其中元组 (A,B) 表示他的键,值 C 和 D 作为 numpy 数组存储在每个键下。如果我只想存储 CD,我可以将其写在一行中,但我很难将两者都放在引擎盖下。这就是我所拥有的:

   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)的数组。

谢谢!

标签: pythondataframedictionarygroup-byapply

解决方案


您可以创建一个新列(例如C_D),其中包含列C和中相应值的列表D。从数据框中选择列CD使用以下tolist()方法:

df['C_D'] = df[['C','D']].values.tolist()

然后在该新列上运行您的代码行:

output_dict = df.groupby(['A','B'])['C_D'].apply(np.array).to_dict()

推荐阅读