python - 按行将文件拆分成许多不同的文件 - 用原始文件的索引命名每个文件

标签 python linux pandas split

我有一个大的 .txt 文件,我使用

写入文件
`df.to_csv(header=True,index=True,sep="\t") in python`

我想使用 linux 将该文件拆分为 len(index) = 2 的文件:

split -d -a 10 -l 2 $FILE ./FILES/file_batch

但是,我不想通过 file_batch0000159800 创建 file_batch0000000001,而是使用原始文件中使用的两行中的第一个索引名称创建每个文件。

例如,

`FILEoriginal.head()
out[1]:#           col1   col2   col3 ...
   #index0      val    val2   val3 ...
   #index1      val4   val5   val6 ...
   #index2      val7   val8   val9 ...
   #index3      val10  val11  val12 ...`

到:

`ls ./FILES
index0
index2`

`vim ./FILES/index2`

`col   col2  col3
val7   val8  val9
val10  val11 val12`

如果可能的话,我希望脚本的计算效率(时间)与 linux“split”函数的顺序相同。即,尽量避免循环。

最佳答案

这是否符合您的要求?我不认为用 bash 写这个有什么好处:

for i in range(0, len(df), 2)
   with open(i,'w') as f:
      df.iloc[[i,i+1],:].to_csv(df.index[i],index=False)

关于python - 按行将文件拆分成许多不同的文件 - 用原始文件的索引命名每个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33990875/

相关文章:

python - Django elasticsearch-dsl在pre_save上更新M2M

python - 删除单引号和分隔括号

python - 控制轴的标题标签颜色

python - 如何使用 Pillow 读取原始 RGBA4444 图像?

linux - 检索 RPM 的当前架构

c - dpdk 18.08 中的 rte_mbuf 没有 struct rte_pktmbuf pkt

linux - 为什么 vim 语法在不同终端上高亮?

python - decision_tree_regressor 模型的负 cross_val_score

python - 减少 Visual Studio Code 中 python 代码的调试启动时间

python - 有限制的子字符串 (pyspark.sql.Column.substr)