从csv文件读取并生成图形时出现问题。不会读取CSV fi上的标题

2024-04-20 01:47:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Python新手,一直在网上关注我发现的关于解决中国邮递员问题的教程。你知道吗

我已经上传了我需要的CSV文件,但是每当我试图定义节点位置数据结构进行绘图时,它总是说“KeyError:”X“”,这是我的CSV文件的标题之一

我的一个朋友告诉我,一个可能的问题可能是CSV文件中有空格,但我不知道如何解决这个问题。你知道吗

我试过使用在线教程中的文件,效果很好,所以我不确定我做错了什么。你知道吗

ID, X, Y
'rep1', 1, 1811
etc..

是运行print(df)时得到的输出类型

我也试过使用delimeter,但我可能做错了。你知道吗

import itertools
import copy
import networkx as nx
import pandas as pd
import matplotlib.pyplot as plt


df1 = pd.read_csv("U:\directory\edge_list_3.csv")
df1=df1.dropna()
print(df1)

#add the r before the directory for it to be read
import pandas as pd
df = pd.read_csv(r"U:\\directory\nodes.csv")
df=df.dropna()
print(df)

##trial no 2, attempting to clear the white spaces
df=pd.read_csv(r'U:\\directory\nodes.csv', delim_whitespace=True)
data= pd.read_csv(r'U:\\directory\nodes.csv, error_bad_lines=False)
df=pd.read_csv(r'U:\\directory\nodes.csv', delimeter='  ')


#############################
#creating an empty graph 
g= nx.Graph()


df1_dict = df1.to_dict()

#display
df1_dict
###########Return the copied line here###
import networkx as nx
g=nx.Graph()


for i, elrow in df1.iterrows():

    g.add_edge(elrow[0], elrow[1], **elrow[2:].to_dict())

print('\n')
    #edge list check
print(elrow[0])
print('\n')
print(elrow[1]) 

print(elrow[2:].to_dict())
################################
#node to a dict
df_dict=df.to_dict()

#Adding the node attributes

for i, nlrow in df.iterrows():
    nx.set_node_attributes(g, {nlrow['ID']: nlrow[1:].to_dict()})


    #Node list
    print(nlrow)


    #preview of the first  5 edges
list(g.edges(data=True))[0:5]

#same for nodes
list(g.nodes(data=True))[0:10]

print('no of edges: {}'.format(g.number_of_edges()))
print('no of nodes: {}'.format(g.number_of_nodes()))


#Problematic line
# Define node positions data structure (dict) for plotting
node_positions = {node[0]: (node[1]['X'], -node[1]['Y']) for node in g.nodes(data=True)}

  File "<ipython-input-22-3dbf80b62cb7>", line 19
    df=pd.read_csv(\\r'U:\\GE90\\nodes.csv', delim_whitespace=True)
                                                                   ^
SyntaxError: unexpected character after line continuation character

#如果我去掉分隔线:


KeyError                                  Traceback (most recent call last)
<ipython-input-23-38d6675d5393> in <module>
     79 
     80 # Define node positions data structure (dict) for plotting
---> 81 node_positions = {node[0]: (node[1]['X'], -node[1]['Y']) for node in g.nodes(data=True)}
     82 
     83 # Preview of node_positions .

<ipython-input-23-38d6675d5393> in <dictcomp>(.0)
     79 
     80 # Define node positions data structure (dict) for plotting
---> 81 node_positions = {node[0]: (node[1]['X'], -node[1]['Y']) for node in g.nodes(data=True)}
     82 
     83 # Preview of node_positions .

KeyError: 'X'

#this is what I got:
ID    rep1

X 1个 1811年 名称:0,数据类型:object ID代表2 X 2个 1811年 名称:1,数据类型:object ID代表4 X 4个 1135年 名称:2,数据类型:object ID代表5 X 5个 年420 名称:3,数据类型:object ID代表7 X 7个 年885 名称:4,数据类型:object ID代表8 X 8个 年1010 名称:5,数据类型:object ID代表10 10倍 年1010 名称:6,数据类型:object ID代表12 X 12英寸 1135年 名称:7,数据类型:object ID代表13 X 13英寸 1135年 名称:8,数据类型:object ID代表16 X 16英寸 年885 名称:9,数据类型:object 身份证17 X 17英寸 1135年 名称:10,数据类型:object ID代表19 X 19英寸 Y 1000年 名称:11,数据类型:object 身份证号码rep26 X 26英寸 年850 名称:12,数据类型:object 身份证号码rep27 X 27英寸 年885 名称:13,数据类型:object 边数:38 节点数:16 内径X Y 0代表1 1811 1代表2 1811 2代表4 1135 3代表5 420 4代表7 885 5代表8 1010 6代表10 1010 7代表12 1135 8代表13 1135 9代表16 885 10代表17 1135 11代表19 1000 12代表26 850 13代表27 885



Tags: csv名称idnodedffordataobject