【问题标题】:Create pandas dataframe with unequal list of values创建具有不相等值列表的熊猫数据框
【发布时间】:2019-09-29 17:29:11
【问题描述】:

除了DataFrame.from_dict 之外,是否还有一个内置函数能够从具有不等值列表的字典中创建数据框?

我正在尝试从以下字典创建数据框:

d = {'g': {1, 2, 3}, 'h': {4, 5}}

所以输出应该是这样的:

   value  class
0    1        g
1    2        g
2    3        g
3    4        h
4    5        h

使用集合而不是列表有问题吗?

【问题讨论】:

    标签: python python-3.x pandas dictionary


    【解决方案1】:

    使用melt的另一种方式

    pd.DataFrame(d.values(), d.keys()).T.melt().dropna()
    

    【讨论】:

    • 有趣...不知道融化。谢谢 :)
    • @KennethRivadeneiraGuadamud,您可以考虑支持对您有帮助的答案。 :)
    • 我需要更多细节;]
    • 我认为它需要列表。 pd.DataFrame(list(d.values()), list(d.keys())).T.melt().dropna() 我更喜欢这个解决方案。 :)
    • 啊。我知道了。很好的答案。
    【解决方案2】:

    如果你不介意手动解包,可以通过

    In [9]: pd.DataFrame([(x, k) for k, v in d.items() for x in v], columns=['value', 'class'])
    Out[9]:
       value class
    0      1     g
    1      2     g
    2      3     g
    3      4     h
    4      5     h
    

    【讨论】:

      【解决方案3】:

      我正在使用unnesting

      unnesting(pd.Series(d).apply(list).to_frame('name'),['name']).reset_index()
        index  name
      0     g     1
      1     g     2
      2     g     3
      3     h     4
      4     h     5
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-06-24
        • 2018-03-07
        • 1970-01-01
        • 2019-08-04
        • 1970-01-01
        • 2023-01-14
        • 1970-01-01
        相关资源
        最近更新 更多