Python 如何从多个数据帧更新数据帧的计数列?

Python 如何从多个数据帧更新数据帧的计数列?,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个5个CSV文件的列表,每个文件大小为7GB,具有相同的结构,我只需要获得一个具有唯一ID的数据帧 实际上,结构非常简单,因为每个CSV文件只由两列组成,userID和count类型为int的列 问题是,一旦我加载了第一个数据帧,并且列userID中的值对于每个用户都是唯一的,接下来的数据帧可能会在第一个数据帧中找到相同的userID 如果发生这种情况,我将对两个计数值求和,并只保留两个记录中的一个 例如: df1: "user" "count" X 3 Y

我有一个5个CSV文件的列表,每个文件大小为7GB,具有相同的结构,我只需要获得一个具有唯一ID的数据帧

实际上,结构非常简单,因为每个CSV文件只由两列组成,
userID
count
类型为
int
的列

问题是,一旦我加载了第一个数据帧,并且列
userID
中的值对于每个用户都是唯一的,接下来的数据帧可能会在第一个数据帧中找到相同的
userID

如果发生这种情况,我将对两个
计数
值求和,并只保留两个记录中的一个

例如:

df1:

"user"  "count"
  X        3
  Y        4
  Z        8
  W        2
在下面的一个例子中:

df2:

"user"  "count"
  X        2
  W        10
  Z        5
  T        6
在这个例子中,我解释了只有2个数据帧的情况,但在我的例子中,它们是5个。我将获得的结果在以下数据框中描述:

df_res:

"user"  "count"
  X        5
  Y        4
  Z        13
  W        12
  T        6        
到目前为止,我尝试的是:

import pandas as pd


users = {}

for path in ["A.csv", "B.csv", "C.csv", "D.csv", "E.csv"]:
    current = pd.read_csv(path)  # here the columns are "user", "counts" and others
    _users = pd.DataFrame(columns=["user", "counts"])
    if users:
        _users = _users.append(users)

    _users = _users.append(current.loc[:, ["user", "counts"]], ignore_index=True)

    users = _users.to_dict(orient='records')


您可以在一个数据帧中读取所有单个csv文件,然后:

结果:

  user  counts
0    T       6
1    W      12
2    X       5
3    Y       4
4    Z      13
  user  counts
0    W      12
1    X       5
2    Y       4
3    Z      13
4    T       6

使用以下工具更新大型csv文件:

结果:

  user  counts
0    T       6
1    W      12
2    X       5
3    Y       4
4    Z      13
  user  counts
0    W      12
1    X       5
2    Y       4
3    Z      13
4    T       6

这并不是那么简单,我以前没有这么说,但是每个文件都是7GB,所以我认为,对于这个解决方案,我会得到一个
MemoryError
。在这种情况下,您应该看看,您还可以在每个新csv之后执行循环中的groupby,这样您就不需要在内存中保存所有文件,只需要处理它们