我是python的新手,
我有一个庞大的dataframe
:
Person OD
A BS1
A BS2
B BS4
B BS8
C BS5
C BS1
D BS9
D BS7
E BS2
E BS7
F BS2
F BS1
G BS1
G BS2
是否有可能转换成python-pandas中的原点(OD)矩阵?例如,从BS1到BS2有2个人(A和G),然后在OD矩阵中有2个人进入BS1-BS2。
我的预期结果:
O/D BS1 BS2 BS3 BS4 BS5 BS6 BS7 BS8 BS9
BS1 2
BS2 1 1
BS3
BS4 1
BS5 1
BS6
BS7
BS8
BS9 1
该怎么做?非常感谢
答案 0 :(得分:2)
以下是解决方案。
pd.pivot_table
您也可以使用od_matrix = pd.pivot_table(od_df, index="O", columns="D", aggfunc="size").reindex(index=places, columns=places)
并将第四行替换为
def oxford_comma(arr)
case arr.size
when 0
""
when 1
arr.first
when 2
arr.join(' and ')
else
[arr[0..-2].join(', '), arr.last].join(', and ')
end
end