我有很多共享相同列的大型csv文件。问题在于它们每个都有不同的行数,而我需要以这种方式重新分片此数据,即每个分片具有相同的行数。
这可以通过以下方式轻松实现:
num_rows_in_shard = 10**7
data = []
for f in sorted(glob.glob("dir/*.csv")):
for index, row in pd.read_csv(f, index_col=0, usecols=[...]).iterrows():
data.append((...))
if len(data) == num_rows_in_shard:
# save data into a new csv
data = []
if len(data):
# save leftovers
data = []
但是我不确定这是否是最快的选项,因为遍历数据框并不是在熊猫中做事的最快方法。
这里没有使用熊猫的特殊理由。我在这里使用它只是因为我需要从csv中选择一些特定的列。