如何从数据帧创建键:列名和值的字典:python 列中的唯一值

Shu*_*Das 5 python dictionary list pandas

我正在尝试创建一个 key:value 对字典,其中 key 是数据框的列名,value 将是一个包含该列中所有唯一值的列表。最终我希望能够从dict 基于条件。到目前为止,这是我能够做的:

for col in col_list[1:]:
    _list = []
    _list.append(footwear_data[col].unique())
    list_name = ''.join([str(col),'_list'])

product_list = ['shoe','footwear']
color_list = []
size_list = []
Run Code Online (Sandbox Code Playgroud)

这里 product,color,size 都是列名,dict 键应该相应地命名为 color_list 等。最终我需要访问字典中的每个 key:value_list。预期输出:

KEY              VALUE
color_list :    ["red","blue","black"]
size_list:  ["9","XL","32","10 inches"]
Run Code Online (Sandbox Code Playgroud)

有人可以帮我解决这个问题吗?附上数据的快照。数据帧

Chi*_*xus 3

DataFrame这样:

import pandas as pd
df = pd.DataFrame([["Women", "Slip on", 7, "Black", "Clarks"], ["Women", "Slip on", 8, "Brown", "Clarcks"], ["Women", "Slip on", 7, "Blue", "Clarks"]], columns= ["Category", "Sub Category", "Size", "Color", "Brand"])

print(df)
Run Code Online (Sandbox Code Playgroud)

输出:

  Category Sub Category  Size  Color    Brand
0    Women      Slip on     7  Black   Clarks
1    Women      Slip on     8  Brown  Clarcks
2    Women      Slip on     7   Blue   Clarks
Run Code Online (Sandbox Code Playgroud)

您可以将 DataFrame 转换为 dict 并在映射 DataFrame 的列时创建新的 dict,如下例所示:

new_dict = {"color_list": list(df["Color"]), "size_list": list(df["Size"])}
# OR:
#new_dict = {"color_list": [k for k in df["Color"]], "size_list": [k for k in df["Size"]]}

print(new_dict)
Run Code Online (Sandbox Code Playgroud)

输出:

{'color_list': ['Black', 'Brown', 'Blue'], 'size_list': [7, 8, 7]}
Run Code Online (Sandbox Code Playgroud)

为了拥有唯一的值,您可以使用set如下示例:

new_dict = {"color_list": list(set(df["Color"])), "size_list": list(set(df["Size"]))}
print(new_dict)
Run Code Online (Sandbox Code Playgroud)

输出:

{'color_list': ['Brown', 'Blue', 'Black'], 'size_list': [8, 7]}
Run Code Online (Sandbox Code Playgroud)

或者,就像 @Ami Tavory 在他的回答中所说的那样,为了从 DataFrame 中获得完整的唯一键和值,您可以简单地执行以下操作:

new_dict = {k:list(df[k].unique()) for k in df.columns}
print(new_dict)
Run Code Online (Sandbox Code Playgroud)

输出:

{'Brand': ['Clarks', 'Clarcks'],
 'Category': ['Women'],
 'Color': ['Black', 'Brown', 'Blue'],
 'Size': [7, 8],
 'Sub Category': ['Slip on']}
Run Code Online (Sandbox Code Playgroud)