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

如何从CSV文件中删除最后一行

裘光启
2023-03-14

我一直在使用pandas导入CSV,但每次尝试使用它时,我都会得到一个随机的额外行,这会导致代码中的错误。我如何完全抹去这一行?

我用来导入它的代码是: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")
df4.dropna() 
print(df4)


g=nx.Graph()

for i,elrow in df3.iterrows():
    g.add_edge(elrow[0], elrow[1], **elrow[2:].to_dict())


# Add node attributes
for i, nlrow in df4.iterrows():
# g.node[nlrow['id']] = nlrow[1:].to_dict()  # deprecated after NX 1.11
nx.set_node_attributes(g, {nlrow['ID']:  nlrow[1:].to_dict()}) 

# Node list example
print(nlrow)

# Preview first 5 edges

list(g.edges(data=True))[0:5] 

# Preview first 10 nodes

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

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

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

我的表是一个简单的ID,X,Y表。我尝试使用:

drop.na() 

代码,但似乎拿不走。我试过在Notepad++上编辑它,并将其导入为txt文件,但它仍然不断出现。有没有什么方法我应该在excel上专门编辑csv文件或者有没有一个代码我可以使用?

('rep1', {'X': 1, 'Y': 1811})

('rep2', {'X': 2, 'Y': 1811})

('rep3', {'X': 3, 'Y': 1135})

('rep4', {'X': 4, 'Y': 420})

('rep5', {'X': 5, 'Y': 885})

('rep6', {'X': 6, 'Y': 1010})

('rep7', {'X': 7, 'Y': 1010})

('rep8', {'X': 8, 'Y': 1135})

('rep9', {'X': 9, 'Y': 1135})

('rep10', {'X': 10, 'Y': 885})

('rep1 ', {})

这条线只针对代表10。

KeyError: 'X'

共有3个答案

汝志
2023-03-14

基本上,您会收到一个解析错误,因为csv行丢失了一些数据。

通常,解决此问题的最佳方法是读取允许丢失值的文件。为此,您的代码应该筛选缺少值的行。

if 'X' not in line:
    # skip the line

跳过一行并不是一个完美的解决方案,它是一个不应该存储在代码中的数据格式知识。您的代码将只读取特定类型的文件,而不是读取任意的.csv文件。

梁明辉
2023-03-14

您可以尝试通过以下方式选择列有效元素:drop[bool(drop. [1])==True] 。我在集合的第二个元素上使用bool转换,因为转换为bool的空dict是false

但是,正如akhetos所说的,最好向我们展示更多的代码和源CSV文件

徐涵亮
2023-03-14

读取csv文件时,请尝试使用error_bad_lines选项。希望它能奏效。

df_csv = pd.read_csv(FILENAME.csv, error_bad_lines=False)

如果您总是想忽略最后一行,请尝试skipfooter

df_csv = pd.read_csv(FILENAME.csv, skipfooter = 1)

要跳过的文件底部的行数(engine='c'不支持)。文件编制

 类似资料:
  • 本文向大家介绍从PHP中的文件中删除最后一行,包括了从PHP中的文件中删除最后一行的使用技巧和注意事项,需要的朋友参考一下 从文件中删除最后一行是一个简单的过程,只需几行代码即可完成。 此脚本中方法的局限性在于,如果文件很大,则将整个文件传递到数组中将占用大量内存,从而有可能导致服务器崩溃。最好的方法不是执行此操作,而是从文件末尾开始直到找到第一个换行符为止。以下脚本将一次咬掉50个字符,直到找到

  • 问题内容: 我打算使用Java擦除文本文件中的最后一行;但是,下面的代码将删除所有内容。 问题答案: 如果要从文件中删除最后一行而不创建新文件,则可以执行以下操作: 从倒数第二个字节开始,查找换行符,然后继续向后搜索,直到找到一个。然后在该换行符之后截断该文件。 如果最后一个字符是换行符(即最后一行的末尾),则从第二个最后一个字节而不是最后一个字节开始。

  • 问题内容: 我已经能够使用该站点上多个用户的输入来使用python创建一个csv,并希望对您的帖子表示感谢。我现在很困惑,将发表我的第一个问题。 我的input.csv看起来像这样: 我正在尝试删除“年份”列及其所有条目。从1960年到2010年,总共有40多个条目。 问题答案: 顺便说一句,循环可以删除,但并没有真正简化。 同样,您可以以直截了当的方式坚持删除列的要求。我发现这通常是一个不好的策

  • 问题内容: 我有以下要在node.js中操作的文本文件(“ test.txt”): 我想删除第一行,以使其成为第一行。我怎样才能做到这一点? 问题答案:

  • 问题内容: 有多个SO问题解决了该主题的某种形式,但它们似乎都无法从csv文件中仅删除一行(通常涉及复制整个文件),效率非常低下。如果我的csv格式如下: 删除Sarah的行的最有效方法是什么?如果可能,我要避免复制整个文件。 问题答案: 您这里有一个基本问题。当前的文件系统(据我所知)没有提供一种从文件中间删除一堆字节的功能。您可以覆盖现有字节,或写入新文件。因此,您的选择是: 创建该文件的副本

  • 问题内容: 我有一个名为的文件和一个名为的字符串,我知道该字符串是该文件的完整行,但是我不知道其行号,并且我想从文件中删除它,该怎么办? 可以使用awk吗? 问题答案: