Python 2.7 在python2.7中使用pandas从csv文件读取最后一个索引

Python 2.7 在python2.7中使用pandas从csv文件读取最后一个索引,python-2.7,csv,pandas,pandasql,Python 2.7,Csv,Pandas,Pandasql,我在磁盘上有一个.csv文件,经过格式化后,我可以很容易地将其读入一个数据帧,并定期向其中写入行。我需要这个数据库有一个行索引,所以每次我写新行时,我需要知道最后一行的索引 有很多方法可以做到这一点: 我可以将整个文件读入一个数据框,附加我的行,然后再次将整个数据框打印到内存中。随着数据库的增长,这可能会变得有点慢 我可以将整个索引列读入内存,然后从中选取最大值,然后将我的行附加到.csv文件中。这可能会更好一些,具体取决于如何实现列读取 我很好奇是否有一种方法可以直接获取一个细胞,而不必将

我在磁盘上有一个.csv文件,经过格式化后,我可以很容易地将其读入一个数据帧,并定期向其中写入行。我需要这个数据库有一个行索引,所以每次我写新行时,我需要知道最后一行的索引

有很多方法可以做到这一点:

  • 我可以将整个文件读入一个数据框,附加我的行,然后再次将整个数据框打印到内存中。随着数据库的增长,这可能会变得有点慢
  • 我可以将整个索引列读入内存,然后从中选取最大值,然后将我的行附加到.csv文件中。这可能会更好一些,具体取决于如何实现列读取

我很好奇是否有一种方法可以直接获取一个细胞,而不必将一大堆额外的信息读入内存。有什么建议吗?

读取整个索引列仍然需要读取和解析整个文件

如果文件中没有多行字段,可以向后扫描文件以查找第一个换行符(但要检查数据是否有换行符)。换行符后面的值将是最后一个索引

也可以将最后一个索引存储在另一个文件中,但必须确保两个文件保持一致


另一种方法是在文件开头保留一些(固定数量的)字节,并将最后一个索引值作为注释写入(就地)。但是您的解析器必须支持注释,或者能够跳过行。

您可以只写一行文件,当您提交到db时,该文件只有最后一个索引值,然后每次读取并更新此文件,您也不能只查询db以获取此信息吗?是的,我可以查询db,但这需要将其读取到内存中。将最后一个索引保存到另一个文件中可能是最好的选择。我的意思是只要求最高/最后一个索引值,而不是专门将整个表读入内存。不过,我不知道怎么做。从技术上讲,它只是一个csv文件,而不是SQL db,因此我知道查询它的唯一方法是将其读入内存,然后进行查询。可以将索引存储在另一个文件中,但可能会遇到一致性问题。我得考虑一下。向后扫描文件是我没有想到的事情,但我认为我不能保证没有多行字段。@KBriggs-在这种情况下,我会将索引值存储在文件的开头,并用空格填充,以确保总长度始终相同(用于就地编辑/写入)-例如:
#最后一个索引:uuuuuuuuu123\n
(其中uuu是空格)。是否可以只编辑文件的第一行而不必重写其余部分?@KBriggs-是的,只要数据的宽度相同(否则,必须移动以下所有数据,这不是我们想要的)。虽然您可能需要以二进制模式打开文件(不了解Python,所以我无法提供示例),但它会是这样的:打开文件,查找开始,写入20个字节(这将自动覆盖现有字节)。谢谢,我将研究它。