我正试图以某种格式读取。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