【问题标题】:Creating a dataframe with vector entries创建带有向量条目的数据框
【发布时间】:2018-06-19 13:25:23
【问题描述】:

我正在尝试创建一个 pandas 数据框,其中单个单元格中的条目是一个 numpy 数组。例如,给定一个化合物列表 - A2B3C4、D1A2J3 等,我为它们中的每一个创建一个 numpy 数组,以便:

firstium - A2B3C4 - [2,3,4,0,0,0,0.....]

secondium - D1A2J3 - [2,0,0,1,......3....]

我想创建一个只有两列的数据框 - 'name' 和 'vec' 其中 name 是化合物名称的字符串,vec 具有公式的数组。假设 vec 的尺寸为 1 x 100。

 Name             vec
firstium          [2,3,4,0,0,0...]
secondium         [2,0,0,1,.....3.]

等等。

到目前为止,我一直在做的是创建一个字典 {'name':'vec'} 并将其转换为数据框:

 Min_dict={}

 for ....:
    ..
    Min_dict[min_name]=vec

 Min_Dataframe=pd.DataFrame.from_dict(Min_dict,orient='index')

但是,这给了我一个数据框,其列数与数组的维度一样多,再加上一。所以,我的数据框有维度数据 x 101。我需要它是数据 x 2

这使得对数据进行处理不方便,因为我想将每个数组视为一个信息单元。有人知道我刚才描述的怎么做吗?

谢谢!

【问题讨论】:

  • DataFrame 的单元格不能保存数据,除非您将其dtype 指定为object,不建议这样做。肯定有更好的办法。例如使用multiindex

标签: arrays pandas numpy vector formula


【解决方案1】:

IIUC:

设置

data = {
    'firstium': np.array([2, 3, 4, 0, 0, 0]),
    'secondium': np.array([2, 0, 0, 1, 0, 3])
}

选项 1

pd.Series(data).rename_axis('Name').reset_index(name='Vec')

        Name                 Vec
0   firstium  [2, 3, 4, 0, 0, 0]
1  secondium  [2, 0, 0, 1, 0, 3]

选项 2

pd.DataFrame(dict(zip(('Name', 'Vec'), zip(*data.items()))))

        Name                 Vec
0   firstium  [2, 3, 4, 0, 0, 0]
1  secondium  [2, 0, 0, 1, 0, 3]

【讨论】:

    猜你喜欢
    • 2013-07-07
    • 2018-03-19
    • 2020-08-10
    • 1970-01-01
    • 2020-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-30
    相关资源
    最近更新 更多