回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p><a href="https://i.stack.imgur.com/nasCd.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/nasCd.png" alt="enter image description here"/></a>如何不按特定顺序输出特定的行(即,我想用(rep1,rep2)、(rep10,rep12)、(rep12,rep16)打印行)
我的csv文件是:</p>
<pre><code> Node1 Node2 Trail Time color estimate
0 rep1 rep2 rep_1 1811 red 0
1 rep2 rep4 rep_1 1811 red 0
2 rep4 rep5 rep_1 1135 red 0
3 rep5 rep7 rep_1 2000 red 0
4 rep7 rep8 rep_1 885 red 0
5 rep8 rep10 rep_1 1010 red 0
6 rep10 rep12 rep_1 1310 red 0
7 rep12 rep13 rep_1 1135 red 0
8 rep13 rep16 rep_1 1435 red 0
9 rep16 rep17 rep_1 885 red 0
10 rep17 rep19 rep_1 1435 red 0
11 rep19 rep26 rep_1 1000 red 0
12 rep26 rep27 rep_1 850 red 0
13 rep2 rep1 rep_2 1811 blue 0
14 rep1 rep4 rep_2 1811 blue 0
15 rep4 rep5 rep_2 1135 blue 0
16 rep5 rep7 rep_2 2000 blue 0
17 rep7 rep8 rep_2 885 blue 0
18 rep8 rep10 rep_2 1010 blue 0
19 rep10 rep12 rep_2 1310 blue 0
.. ... ... ... ... ... ...
159 rep5 rep7 rep_26 2000 brown 0
160 rep7 rep8 rep_26 885 brown 0
161 rep8 rep10 rep_26 1010 brown 0
162 rep10 rep12 rep_26 1310 brown 0
163 rep12 rep13 rep_26 1135 brown 0
164 rep13 rep16 rep_26 1435 brown 0
165 rep16 rep17 rep_26 885 brown 0
166 rep17 rep19 rep_26 1435 brown 0
167 rep19 rep27 rep_26 1000 brown 0
168 rep27 rep1 rep_27 885 blue 0
169 rep1 rep2 rep_27 1181 blue 0
170 rep2 rep4 rep_27 1811 blue 0
171 rep4 rep5 rep_27 1135 blue 0
172 rep5 rep7 rep_27 2000 blue 0
173 rep7 rep8 rep_27 885 blue 0
174 rep8 rep10 rep_27 1010 blue 0
175 rep10 rep12 rep_27 1310 blue 0
176 rep12 rep13 rep_27 1135 blue 0
177 rep13 rep16 rep_27 1435 blue 0
178 rep16 rep17 rep_27 885 blue 0
179 rep17 rep19 rep_27 1435 blue 0
180 rep19 rep26 rep_27 850 blue 0
[181 rows x 6 columns]
</code></pre>
<p>这是我尝试用于输出的内容:</p>
<pre><code>print(df3(odd_matching))
</code></pre>
<p>我也试过:</p>
<pre><code>tcount=0
bcount=0
for cols in df3.iterrows():
tcount += 1
if cols ['Node1'] == odd_matching
bcount +=1
print(Node1, 'This', Node2, 'This', )
</code></pre>
<p>剩下的代码:</p>
<pre><code>import itertools
import copy
import networkx as nx
import pandas as pd
import matplotlib.pyplot as plt
import csv
df3=pd.read_csv(r"U:\\user\edge_list_4.csv")
print(df3)
df4=pd.read_csv(r"U:\\user\nodes_fixed_2.csv",error_bad_lines=False)
df4.dropna()
print(df4)
# Compute min weight matching.
# Note: max_weight_matching uses the 'weight' attribute by default as the
attribute to maximize.
odd_matching_dupes= nx.algorithms.max_weight_matching(g_odd_complete, True)
print('Number of edges in matching: {}'.format(len(odd_matching_dupes)))
# Preview of matching with dupes
odd_matching_dupes
# Convert matching to list of deduped tuples
odd_matching = list(pd.unique([tuple(sorted([k, v])) for k, v in
odd_matching_dupes]))
#Counts
print('Number of edges in matching (deduped):
{}'.format(len(odd_matching)))
# Preview of deduped matching
odd_matching
g_odd_complete_min_edges = nx.Graph(odd_matching)
def add_augmenting_path_to_graph(graph, min_weight_pairs):
"""
Add the min weight matching edges to the original graph
Parameters:
graph: NetworkX graph (original graph from trailmap)
min_weight_pairs: list[tuples] of node pairs from min weight matching
Returns:
augmented NetworkX graph
"""
# We need to make the augmented graph a MultiGraph so we can add parallel
edges
graph_aug=nx.MultiGraph(graph.copy())
for pair in min_weight_pairs:
graph_aug.add_edge(pair[0],
pair[1],
**{'Time': nx.dijkstra_path_length(graph, pair[0],
pair[1]), 'Trail': 'augmented'}
# attr_dict={'distance':
nx.dijkstra_path_length(graph, pair[0], pair[1]),
# 'trail': 'augmented'} # deprecated
after 1.11
)
return graph_aug
#Create augmented graph: add the min weight matching edges to g
g_aug=add_augmenting_path_to_graph(g, odd_matching)
</code></pre>
<p>奇数匹配是:</p>
<pre><code>[('rep19', 'rep27'), ('rep2', 'rep5'), ('rep10', 'rep7'), ('rep1', 'rep8'), ('rep12', 'rep13'), ('rep16', 'rep17')]
The error I get is:
</code></pre>
<hr/>
<p>你知道吗-
TypeError回溯(最近的调用
最后)
在里面
271
272
-->;273打印(“此示例”,df3(奇数匹配))</p>
<pre><code> TypeError: 'DataFrame' object is not callable
</code></pre>