将csv文件按一定格式读入字典



我正试图以某种格式读取。csv文件到字典中。下面是可复制的格式dataframe。

# initialize list of lists
data = [['fac1', 1,11], ['fac1', 2,12], ['fac1',3,13],['fac2',1,8],['fac2',2,9],['fac2',3,20]]
# Create the pandas DataFrame
df = pd.DataFrame(data, columns=['facility', 'customer','distance'])
print(df)
Output
facility  customer  distance
fac1         1        11
fac1         2        12
fac1         3        13
fac2         1         8
fac2         2         9
fac2         3        20

我想在

下面以某种格式将这个读入字典中
{'Fac-1': {1: 4, 2: 5, 3: 6, 4: 8, 5: 10},
'Fac-2': {1: 6, 2: 4, 3: 3, 4: 5, 5: 8},
'Fac-3': {1: 9, 2: 7, 3: 4, 4: 3, 5: 4}}

你试过这样做吗?

# Create the pandas DataFrame
df = pd.DataFrame(data, columns=["facility", "customer", "distance"])
dict = {
k.replace("fac", "Fac_"): {c.customer: c.distance for _, c in v.iterrows()}
for k, v in df.groupby(["facility"])
}

您可以创建一个方法将dict中的值设置为列。外部键为facility,字典内部键为customer,您的值为distance。你试过这样做吗?

import pandas as pd
def dict_to_values(key, value):
return len(value.keys())*[key], list(value.keys()), list(value.values())

d = {'Fac-1': {1: 4, 2: 5, 3: 6, 4: 8, 5: 10}, 'Fac-2': {1: 6, 2: 4, 3: 3, 4: 5, 5: 8},  'Fac-3': {1: 9, 2: 7, 3: 4, 4: 3, 5: 4}}
facility, customer, distance = [], [], [] 
for key, value in d.items():
samples = dict_to_values(key, value)
facility.extend(samples[0])
customer.extend(samples[1])
distance.extend(samples[2])
df = pd.DataFrame({'facility': facility, 'customer': customer, 'distance': distance})
print(df)

输出:

facility  customer  distance
0     Fac-1         1         4
1     Fac-1         2         5
2     Fac-1         3         6
3     Fac-1         4         8
4     Fac-1         5        10
5     Fac-2         1         6
6     Fac-2         2         4
7     Fac-2         3         3
8     Fac-2         4         5
9     Fac-2         5         8
10    Fac-3         1         9
11    Fac-3         2         7
12    Fac-3         3         4
13    Fac-3         4         3
14    Fac-3         5         4

最新更新