【发布时间】:2020-05-26 10:36:10
【问题描述】:
我有一个包含 5 个 CSV 文件的列表,每个文件大小为 7 GB,具有相同的结构,我只需要获取一个具有唯一 ID 的 DataFrame。
结构实际上非常简单,因为每个 CSV 文件仅由 2 列组成,userID 和 count 类型为 int 的列。
问题是,一旦我加载第一个 DataFrame,userID 列中的值对于每个用户都是唯一的,以下 DataFrame 可能具有与第一个相同的 userID。
如果发生这种情况,我会将两个 count 值相加并只保留两条记录之一。
例如:
df1:
"user" "count"
X 3
Y 4
Z 8
W 2
在下面的一个:
df2:
"user" "count"
X 2
W 10
Z 5
T 6
在这个例子中,我只用 2 个 DataFrame 来解释这种情况,但在我的例子中,它们是 5 个。我将获得的结果在以下 DataFrame 中进行了描述:
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')
【问题讨论】: