我有以下数据框:
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]}]]
有人可以建议我执行该操作吗?
谢谢。
答案 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]}}