【问题标题】:How to export a dataframe to a list of cell and not a list of rows?如何将数据框导出到单元格列表而不是行列表?
【发布时间】:2021-06-17 19:01:35
【问题描述】:

不知道还能怎么问这个问题,但这只是我需要在一个非常大的数据集上执行的一种非常特殊的转换类型,因此它必须尽可能高效。

假设我的数据框如下所示:

id 1/01/2001 1/02/2001 1/03/2001
1 629 138 240
2 249 480 104
3 264 246 244
4 259 842 278

所以我在列中随时间跟踪每个 id 的值,但我需要将其转换为字典数组。通常我可以只使用df.to_dict('records'),因为由于形状的原因,我必须变得更聪明一些。我希望字典数组看起来像这样:

[
  {
     'id': 1,
     '1/01/2001': 629
  },
  {
     'id': 1,
     '1/02/2001': 138
  },
  {
     'id': 1,
     '1/03/2001': 240
  },
  {
     'id': 2,
     '1/01/2001': 249
  },
  {
     'id': 2,
     '1/02/2001': 480
  },
  {
     'id': 2,
     '1/03/2001': 104
  },
  ...
]

等等……

有没有不使用复杂 for 循环的简单方法?

【问题讨论】:

  • 对不起,我很困惑。这不仅仅是 df.to_dict(records)?
  • @ifly6 'records make [{'id': 1, '1/01/2001': 629, '1/02/2001': 138, '1/03/2001': 240}, {'id': 2, '1/01/2001': 249, '1/02/2001': 480, '1/03/2001': 104} by rows, he want by cell
  • @ifly6 如果数据框的列是 id, date, value,它将是 df.to_dict('records'),但值在列中被跟踪,所以有点奇怪

标签: python pandas data-structures


【解决方案1】:

最好的似乎是id 作为索引和 2 个循环,因为我没有发现任何关于将 DF 导出到单元格列表的信息

result = [{'id': i, k: v} for i, cols in df.to_dict('index').items() 
                          for k, v in cols.items()]

【讨论】:

  • 是的,这正是我所需要的,非常聪明
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-21
相关资源
最近更新 更多