【问题标题】:Python dictionary with list as values: how do I select values?以列表为值的 Python 字典:如何选择值?
【发布时间】:2020-03-13 02:11:06
【问题描述】:

我有一本以列表为值的字典:

d = {'a':[0,1],'b':[2,3]}

我想创建一个数据框,其中一列作为键,两列作为列表中的值:

|key |val1 |val2 |
|----|-----|-----|
|a   |0    |1    |
|b   |2    |3    |
|----|-----|-----|

我的计划是创建三个列表,然后将它们添加到新的数据框中。对键工作正常,但我不知道如何将列表中的元素分隔为值。

这是我尝试过的:

key = d.keys()
val1 = d.values()[0]
val2 = d.values()[1]

作为值存储在字典中的列表元素的索引是什么?

【问题讨论】:

  • 类似pd.DataFrame(d).T.reset_index()?

标签: python list dataframe dictionary


【解决方案1】:

所以首先如果你想从字典中创建一个数据框,有这个方法

import pandas as pd

pd.DataFrame.from_dict(d, orient='index')

查看文档以了解 orient 在做什么。根据如何创建它,您可以自己查看命令。

此外,如果您想访问列表的元素并自行创建数据框,您可以这样做

for val in d.values():
    print(val[0])
    print(val[1])
    #work with them

您可以通过访问元素在列表中收集所有这些值,如此处所示,然后您可以创建数据框pd.Dataframe()

【讨论】:

    【解决方案2】:

    如果您想“手动”为您的列选择元素,您可以使用:

    {'key': list(d.keys()), **({'val%s' % i: list(map(lambda x: x[i], d.values())) for i in range(len(list(d.values())[0]))})}
    

    输出:

    {'key': ['a', 'b'], 'val0': [0, 2], 'val1': [1, 3]}
    

    获取DataFrame:

    pd.DataFrame({'key': list(d.keys()), **({'val%s' % i: list(map(lambda x: x[i], d.values())) for i in range(len(list(d.values())[0]))})})
    

    输出:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-11
      • 1970-01-01
      • 1970-01-01
      • 2016-01-02
      • 2011-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多