我需要像这样一个csv文件
$('#MemberBasicInfor_FirstName, #MemberBasicInfor_LastName').on('keypress', function (event) {
var allowedCodes = [[8, 8], [32, 32], [48, 57], [65, 90], [97, 122], [127, 127]];
var key = String.fromCharCode(!event.charCode ? event.which : event.charCode);
if (!allowedCodes(codePair => key.charCodeAt(0) <= codePair[0] || key.charCodeAt(0) >= codePair[1])) {
event.preventDefault();
return false;
}
});
其中A,B,C和D都是节点,值是它们的连接强度。如您所见,我的输入csv不是邻接矩阵,每个轴上的节点也不一定相同。
这个想法是根据阈值将csv转换为加权边缘列表。例如,阈值为0.3时,上述csv将返回:
,A,B,C
B,0,0.25,1.3
D,,,
C,,0.75,1
我是python的新手,我不知道如何去做这件事。我已经能够从邻接矩阵生成图形,但是,我正在分析的数据不再是干净的,我的代码也无法再处理它。
答案 0 :(得分:0)
这就是我想出来的
with open(my_csv_file) as f:
s = f.read()
lines = []
row_headings = []
edge_list = []
for row, line in enumerate(s.split('\r\n')):
lines.append(line)
line_val = line.split(',')
row_headings.append(line_val[0])
col_headings = (lines[0].split(','))
for col, val in enumerate(line.split(',')):
try:
if float(val) > threshold:
edge_list.append((col_headings[col], row_headings[row]))
except ValueError:
pass
DG = nx.DiGraph()
my_graph = nx.from_edgelist(edge_list, create_using=DG)