将数据框转换为列表和字典

时间:2020-05-11 09:40:34

标签: python list dictionary

我有以下数据框:

      Region   Name    Price
0     ny       A         53.00
1     ln       B         52.23
2     ln       B         51.20
3     tk       C         50.50

我想将数据转换为列表中的列表,并将名称和价格字段转换为字典。 名称字段被重复,但是我想获得唯一的值。然后将价格分配给密钥。

类似这样的内容:[Region,{Name:Price}]

例如:

[[ny, {"A": array([53.00])}],[ln, {"B": array([52.23 , 51.20])}],[tk, {"C": array([50.50]}]]

有人可以建议我执行该操作吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

您可以将Region,Name作为MultiIndex并输出到to_dict,类似这样:

df = pd.DataFrame({
    'Region': ['ny', 'ln', 'ln', 'tk'],
    'Name': ['A', 'B', 'B', 'C'],
    'Price': [53, 52, 51, 50]
})

# First, combined same values for Region/Name pair into a list
df_grouped = df.groupby(['Region', 'Name']).Price.apply(list).to_frame()

# Second, create a nice dictionary
df_grouped.groupby(level=0).apply(
    lambda df: df.xs(df.name).to_dict()['Price']
).to_dict()

>>> {'ln': {'B': [52, 51]}, 'ny': {'A': [53]}, 'tk': {'C': [50]}}