首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将多个csv文件中的单个数据列与Pandas合并成一个?

如何将多个csv文件中的单个数据列与Pandas合并成一个?
EN

Stack Overflow用户
提问于 2016-01-13 13:01:22
回答 1查看 792关注 0票数 1

我正在尝试将40个几乎类似的csv文件中的单个数据列与Pandas合并。这些文件包含由windows 'Tasklist‘命令生成的csv形式的Windows进程的信息。

我要做的是,使用PID作为键,将这些文件中的内存信息合并到一个文件中。然而,有时会出现一些随机的无关紧要的进程,但会导致csv文件之间的不一致。这意味着在某些文件中可能有65行,而在某些文件中可能有75行。然而,这些随机进程并不显着,它们的PID变化应该无关紧要,在合并文件时也应该删除它们。

这是我第一次尝试的方法:

代码语言:javascript
复制
# CSV files have following columns
# Image Name, PID, Session Name, Session #, Mem Usage

file1 = pd.read_csv("tasklist1.txt")
file1 = file1.drop(file1.columns[[2,3]], axis=1)    

for i in range(2,41):

    filename = "tasklist" + str(i) + ".txt"

    filei = pd.read_csv(filename)
    filei = filei.drop(filei.columns[[0,2,3]], axis=1)

    file1 = file1.merge(filei, on='PID')


file1.to_csv("Final.txt", index=False)

从第一个csv文件中,我只是删除了会话名称和会话#列,但是将图像名称保留为每行的标题。然后,从下面的csv文件中,我只保留PID和Mem使用列,并尝试将以前一直在增长的csv文件与即将到来的文件中的数据合并。

这里的问题是,当循环到第5次迭代时,它不能再合并这些文件了,因为我得到了“只有唯一值的Index对象才有效的”错误。

所以我可以在第一个循环中合并第一个文件和第二个到第四个文件。如果然后创建第二个循环,将第5个文件合并到第6个至第8个文件,然后将这两个合并文件合并在一起,那么文件1到8中的所有数据都将完全合并。

对于如何在不创建x个额外循环的情况下执行这种链式合并有任何建议吗?此时,我正在试验40个文件,实际上可以用嵌套循环强行执行整个过程,但这并不是一种有效的合并方式,而且是不可接受的,如果我需要缩放这个来合并更多的文件的话。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-13 13:45:12

重复的列名将导致此错误。

所以您可以在函数suffixes中添加参数merge

后缀:2长序列(元组,列表,.) 后缀分别适用于左侧和右侧重叠的列名。

重叠值列

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34767459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档