【问题标题】:How to dump dict(key with multiple list) to csv using pandas?如何使用 pandas 将 dict(具有多个列表的键)转储到 csv?
【发布时间】:2020-01-13 02:19:43
【问题描述】:

我有字典

my_dict={
"A": [["value-1", "value-2"], [1, 2]],
"B": [["price-1", "price-2"], [1,2]]
}

我想把dump这本字典和pandas放到csv文件中

import pandas as pd
df = pd.DataFrame.from_dict(data=my_dict, orient='index')
df.to_csv("data/mydict_11sept.csv", sep=',')

输出:

           A           |       B
________________________________________________    
["value-1", "value-2"] | ["price-1", "price-2"]
       [1, 2]          |     [1,2]

预期输出:

    A       |    B
-----------------------
value-1 | 1 | price-1 | 1
value-2 | 2 | price-2 | 2

更新:给出了我的文件的输出并给出了预期的文件格式

【问题讨论】:

    标签: python python-3.x pandas csv dictionary


    【解决方案1】:

    在dict理解中首先使用预处理enumerate

    d = {f'{k}_{i}': x for k, v in my_dict.items() for i, x in enumerate(v)}
    df = pd.DataFrame(d)
    print (df)
           A_0  A_1      B_0  B_1
    0  value-1    1  price-1    1
    1  value-2    2  price-2    2
    

    编辑:

    d = {k:list(zip(*v)) for k, v in my_dict.items()}
    df = pd.DataFrame(data=d)
    print (df)
                  A             B
    0  (value-1, 1)  (price-1, 1)
    1  (value-2, 2)  (price-2, 2)
    

    或者:

    d = {k:[', '.join(str(y) for y in x) for x in zip(*v)] for k, v in my_dict.items()}
    df = pd.DataFrame(data=d)
    print (df)
                A           B
    0  value-1, 1  price-1, 1
    1  value-2, 2  price-2, 2
    

    EDIT1:这里可以在列中创建MultiIndex

    d = {(k, i) : x for k, v in my_dict.items() for i, x in enumerate(v)}
    df = pd.DataFrame(d)
    print (df)
             A           B   
             0  1        0  1
    0  value-1  1  price-1  1
    1  value-2  2  price-2  2
    

    如有必要,删除第二级,但不推荐,因为按列选择的问题只命名一列:

    df.columns = df.columns.droplevel(1)
    print (df)
             A  A        B  B
    0  value-1  1  price-1  1
    1  value-2  2  price-2  2
    
    print (df['A'])
             A  A
    0  value-1  1
    1  value-2  2
    

    【讨论】:

    • 谢谢。有没有办法合并?
    • @R.A.Munna - 你能解释更多吗?
    • 在问题的第一行与相应的列表合并。谢谢。
    • @R.A.Munna - 添加了 2 个新解决方案 - 第一个用于元组,第二个用于将值连接到字符串
    • 它可以工作,但我想要第一行合并,相应的列表将在单独的列中。但是您的输出在同一列中touple or string。请看我已经用格式更新了问题。谢谢。
    猜你喜欢
    • 2022-01-02
    • 2015-09-20
    • 2018-07-19
    • 2017-05-18
    • 2015-04-22
    • 2020-02-09
    • 2020-08-29
    • 2021-10-06
    • 2021-09-27
    相关资源
    最近更新 更多