gpt4 book ai didi

python - 如何使用 R 按列将 .csv 拆分为多个 .csv?

转载 作者:行者123 更新时间:2023-12-05 07:36:08 27 4
gpt4 key购买 nike

我有一个包含 3000 多列的巨大 .CSV 文件,需要将它们加载到数据库中,因为表的限制是 1024 列,我想将这些 .CSV 文件拆分为 1024 列或更少列的多个文件。

到目前为止,我在之前有关该主题的问题的帮助下尝试过 -

python -

 import csv 
import file
input import os
source = 'H:\\Programs\\Exploratory Items\\Outdated\\2018\\csvs\\' for root, dirs, filenames in os.walk(source):
for f in filenames:
fullpath = os.path.join(source, f)
output_specifications = ( (fullpath[:-4] + 'pt1.csv', slice(1000)
(fullpath[:-4] + 'pt2.csv', slice(1000, 2000)),
(fullpath[:-4] + 'pt3.csv', slice(2000, 3000)),
(fullpath[:-4] + 'pt4.csv', slice(3000, 4000)),
(fullpath[:-4] + 'pt5.csv', slice(4000, 5000)), )
output_row_writers = [
(
csv.writer(open(file_name, 'wb'),
quoting=csv.QUOTE_MINIMAL).writerow, selector,
) for file_name, selector in output_specifications ]

reader = csv.reader(fileinput.input())
for row in reader:
for row_writer, selector in output_row_writers: row_writer(row[selector])

上述 python 代码的问题是拆分和写入这些文件需要永远,因为它是按行写入的,这是我的理解。不适合我的情况,因为我有 200 多个 .CSV 文件,每个文件有 1000 多行。

现在尝试 -

-cut 命令 (POSIX) 但我使用 Windows,所以将在 Ubuntu 平台上尝试这个。

想在 R 中尝试这个:

我有一个代码可以将我所有的 SPSS 转换为 .csv,它可以高效地工作,所以我想在此阶段添加更多内容,以便它可以按列将我的文件拆分为多个 .csvs。

setwd("H:\\Programs\\2018")
getwd()
list.files()

files <- list.files(path = '.', pattern = '.sav')

library(foreign)
for (f in files) { #iterate over them
data <- read.spss(f, to.data.frame = TRUE, use.value.labels = FALSE )
write.csv (data, paste0(strsplit(f, split = '.', fixed = T)[[1]][1], '.csv'))
}

谢谢

引用文献 - Python code ref

最佳答案

迟到总比不到好:) 这是基于代码生成库的解决方案 - convtools

from convtools import conversion as c
from convtools.contrib.tables import Table


columns_per_file = 1000
for filename in filenames:
# reading columns
columns = Table.from_csv(filename, header=False).columns

# slicing
for part_number, i in enumerate(
range(0, len(columns), columns_per_file), 1
):
Table.from_csv(filename, header=False).take(
# taking only needed ones
*(col for col in columns[i : i + columns_per_file])
).into_csv(
# streaming to the part
"{}.pt{}.csv".format(filename.replace(".csv", ""), part_number),
include_header=False,
)

关于python - 如何使用 R 按列将 .csv 拆分为多个 .csv?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49258407/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com