问题描述
我有一个来自excel工作簿的流矩阵,该矩阵向我显示了货物在两点之间的移动,类似于此:
1 2 3 ... n
1 0 7 8
2 5 0 3 .
3 6 9 0 .
. . .
. ... .
. .
n 0
我正在尝试创建一个字典,其中每个键都由每个Origin-Destination对组成,如下所示:
{(1,1):0;
(1,2):7;
(1,3):8;
...;
(3,2):9;
(3,3):0;
...;
(n-1,n-1): x
(n,n): 0}
任何想法和帮助将受到高度赞赏!
到目前为止,我所做的是:
import pandas as pd
#Data Commodities#
Kdata= pd.read_excel('turquia.xls',sheet_name = 'Flow')
K = {}
for i in Kdata:
for j in Kdata:
K.update({(i,j):Kdata[i]})
我正在获取一个具有OD对的字典,但是它在所有元素中插入了所有距离:
`
Name: 12,Length: 81,dtype: float64,(12,13):
0 7115.284948
1 2356.131379
2 3077.130525
3 1994.241678
4 1374.186546
...
76 632.489214
77 845.193097
78 430.053121
79 1728.571316
80 1181.537133
`
解决方法
这只是unstack()
中的to_dict()
pandas
import pandas as pd
import io
df = pd.read_csv(io.StringIO("""id 1 2 3
1 0 7 8
2 5 0 3
3 6 9 0"""),sep="\s+").set_index("id")
df.unstack().to_dict()
输出
{('1',1): 0,('1',2): 5,3): 6,('2',1): 7,2): 0,3): 9,('3',1): 8,2): 3,3): 0}