当前位置: 首页 > 知识库问答 >
问题:

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

充子航
2023-03-14

我是Python新手,一直在关注我在网上找到的关于解决中国邮递员问题的教程

上传了所需的CSV文件,但每当我试图定义用于打印的节点位置数据结构时,它总是说“KeyError:'X”“”,这是我的CSV文件的标题之一

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

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

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

是打印(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 Y 1811名称: 0, dtype:对象ID rep2 X 2 Y 1811名称: 1, dtype:对象ID rep4 X 4 Y 1135名称: 2, dtype:对象ID rep5 X 5 Y 420名称: 3, dtype:对象ID rep7 X 7 Y 885名称: 4, dtype:对象ID rep8 X 8 Y 1010名称: 5, dtype:对象ID rep10 X 10 Y 1010名称: 6, dtype:对象ID rep12 X 12 Y 1135名称: 7, dtype:对象ID rep13 X 13 Y 1135名称: 8, dtype:对象ID rep16 X 16 Y 885名称: 9, dtype:对象ID rep17 X 17 Y 1135名称: 10, dtype:对象ID rep19 X 19 Y 1000名称: 11, dtype:对象ID rep26 X 26 Y 850名称: 12, dtype:对象ID rep27 X27 Y 885名称: 13, dtype:对象边缘号: 38节点号: 16 ID X Y 0 rep1 1 1811 1 rep2 2 1811 2 rep4 4 1135 3 rep5 420 4 rep7 885 5 rep8 1010 6 rep<--plhd--012 12 1135 8代表13 13 1135 916 16 885 10代表17 17 1135 1119 19 1000 12代表26 26 850 13

共有1个答案

百里鸿祯
2023-03-14

您的示例文件是否与您输入的完全相同?一段时间。csv文件I(以及Python csv库)的结构更像这样:

ID, X, Y
'rep1', 1, 1811
'rep2', 2, 420
etc....

这就解释了为什么你的钥匙不符合预期。

 类似资料:
  • 我使用Jmeter和Selenium Webdriver采样器 代码CSV配置 我的问题是它没有从CSV中挑选。以上两行生成结果“loginName”,而不是从文件中选择实际的登录名。我用过单引号、双引号等,但运气不佳。使用${loginName}会产生错误。知道什么地方出了问题,如何解决吗?

  • 我是R的新手,想读一个csv文件。但是当我试图阅读它时,我遇到了错误。我的csv文件如下: 当我在RStudio中使用此命令时,我得到了错误:命令: 错误: 读取时出错。表(file=file,header=header,sep=sep,quote=quote,:不允许重复的“row.names” 我还尝试删除错误并使用此命令: 但是当我查看输出时,它不能保持方阵的结构。你能帮我做什么吗?

  • 您好,我在读取每行包含3列的csv文件时遇到问题。我似乎无法将最后一个单元格(3)解析为整数,即使它始终是一个“可解析”字符串:Berlin,Buenos Aires,7402我似乎无法得到7402编译器抛出的所有结果是: “在java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:68

  • 我试图读取CSV文件,但它抛出了一个错误。我无法理解我的语法有什么问题,或者我是否需要向我的read_csv添加更多属性。 我试了一下这个解决办法 UnicodeDecodeError:“utf-8”编解码器无法解码位置21中的字节0x96:起始字节也无效。但它不起作用 [错误] UnicodeDecodeError回溯(最近一次调用)pandas/_libs/解析器。大熊猫中的pyx_图书馆。解

  • 我在从CSV文件读取数据以将值传递给请求时遇到问题。我有一个csv与3列用户id,密码和类型。当为username字段传递数据时,它采用3列的值,而不仅仅是username Jmeter version: 5.0 CSV 文件值: