【问题标题】:Keys as Rows (Pandas Dataframe from dictionary)键作为行(字典中的 Pandas 数据框)
【发布时间】:2022-01-10 17:03:30
【问题描述】:

我有这本词典:

d = {'a': (1,2,3), 'b': (4,5,6)}

我希望它形成一个数据框,其中键与其对应的值一起显示为行,如下表所示:

Keys Values
a 1
a 2
a 3
b 4
b 5

有什么想法吗?

【问题讨论】:

    标签: pandas dataframe dictionary key row


    【解决方案1】:
    d = {'a': (1,2,3), 'b': (4,5,6)}
    df = pd.DataFrame(d).unstack().droplevel(1).reset_index().rename({'index':'Keys', 0:'Values'}, axis=1)
    

    输出:

    >>> df
      Keys  Values
    0    a       1
    1    a       2
    2    a       3
    3    b       4
    4    b       5
    5    b       6
    

    【讨论】:

      【解决方案2】:

      这是我的建议。

      1. 使用以下命令创建数据框:

      df = pd.DataFrame({'Keys': list(dict.keys()), 'Values': list(dict.values())})

      1. 使用以下命令在“值”列上展开您的数据框:

      df = df.explode(column='Values').reset_index(drop=True

      输出结果是这样的:

             Keys   Values
        0    a      1
        1    a      2
        2    a      3
        3    b      4
        4    b      5
        5    b      6
      

      【讨论】:

      • 您可以添加.reset_index(drop=True) 将索引从0 0 0 1 1 1 固定为0 1 2 3 4 5
      • 感谢您的评论@user17242583
      • 非常感谢我的朋友工作得很好!
      【解决方案3】:

      您可以unstack 数据框、reset_index 并更改列名:

      df = (pd.DataFrame(dictionary)
            .unstack()
            .reset_index()
            .loc[:,['level_0',0]]
            .rename(columns={'level_0':'keys',0:'values'}))
      

      输出:

        keys  values
      0    a       1
      1    a       2
      2    a       3
      3    b       4
      4    b       5
      5    b       6
      

      【讨论】:

      • 好主意,但如果键 'a' 的值多于键 'b' 则失败
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-30
      • 2021-02-22
      • 2021-08-24
      • 2020-12-12
      • 2015-10-20
      • 2018-01-31
      • 2021-08-24
      相关资源
      最近更新 更多