【问题标题】:Creating a dictionary from a Dataframe, where key is a single value, but the value is a list of values从 Dataframe 创建字典,其中键是单个值,但值是值列表
【发布时间】:2021-12-29 13:50:49
【问题描述】:

我有一个包含四列的 csv 文件。前两列是单个字符串,最后两列是多值列表。使用 pandas 数据框将列拉入,我正在尝试制作一系列字典。第一个很容易 -

df = pd.read_csv('data.csv')
dict1 = dict(zip(df[col_1],df[col_2]))
  • 但是现在,我正在尝试制作 {col_1: col_3}{col_1: col_4},其中 col_3 和 col_4 各有多个值,我发现让 pandas/python 产生我正在寻找的东西变得更加困难。

我的 csv 数据结构如下:

col_1, col_2, col_3, col_4
John Doe, A4w, "22,35,67", "45,78,99"

我想要的输出是一个字典,其中 col_1 中的条目是键,值是 col_3 中每个单独项目的列表(然后是另一个字典,其结构与 col_4 相同)。

到目前为止,我已经能够让 pandas 给我{John Doe:"22,35,67"},但我想要的是{John Doe:['22','35','67']}。 (我以后需要能够遍历列表)。如何在此处将“多值”更改为“列表”?

【问题讨论】:

    标签: python pandas list dictionary


    【解决方案1】:

    我相信在这种情况下,您必须在要转换为列表的列中使用.str.split(','),例如:

    df = pd.DataFrame({'col1' : 'John Doe', 'col2' : 'A4w', 'col3' : "22,35,67", 'col4' : "45,78,99"}, index = [0])
    print(dict(zip(df['col1'], df['col3'].str.split(','))))
    # {'John Doe': ['22', '35', '67']}
    

    【讨论】:

    • 太棒了!这完全解决了我的问题。谢谢!
    猜你喜欢
    • 2014-10-08
    • 2018-07-27
    • 2021-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多