我相信肯定有更好的方法,但是我现在脑子一片空白。我有一个以这种格式排列的CSV文件。ID列已经排序,所以至少所有的内容都是分组在一起的:
这是一个基于Python的解决方案,但如果能完成任务,我也可以接受使用awk或bash的方法。
编辑:
为了澄清,我希望将组分割成固定数量的文件,我可以设置。
在这种情况下,是3个文件(所以x = 3)。第一组(AAAA)将放入1.csv,第二组放入2.csv,第三组放入3.csv,然后对于第四组,它将循环回来并插入到1.csv中。等等。
示例输出1.csv:
示例输出2.csv:
示例输出3.csv:
Text ID
this is sample text, AAAA
this is sample text, AAAA
this is sample text, AAAA
this is sample text, AAAA
this is sample text, AAAA
this is sample text2, BBBB
this is sample text2, BBBB
this is sample text2, BBBB
this is sample text3, CCCC
this is sample text4, DDDD
this is sample text4, DDDD
this is sample text5, EEEE
this is sample text5, EEEE
this is sample text6, FFFF
this is sample text6, FFFF
我想做的是快速将CSV文件分割成X个较小的CSV文件。所以如果X==3,那么AAAA会进入"1.csv",BBBB会进入"2.csv",CCCC会进入"3.csv",而下一组则会循环回到"1.csv"。
这些组的大小不同,所以硬编码的数字分割方法在这里行不通。
有没有比我目前使用Python中的Pandas groupby方法更快、更可靠的分割方法?
file_ = 0
num_files = 3
for name, group in df.groupby(by=['ID'], sort=False):
file_+=1
group['File Num'] = file_
group.to_csv(file_+'.csv',index=False, header=False, mode='a')
if file_ == num_files:
file_ = 0
这是一个基于Python的解决方案,但如果能完成任务,我也可以接受使用awk或bash的方法。
编辑:
为了澄清,我希望将组分割成固定数量的文件,我可以设置。
在这种情况下,是3个文件(所以x = 3)。第一组(AAAA)将放入1.csv,第二组放入2.csv,第三组放入3.csv,然后对于第四组,它将循环回来并插入到1.csv中。等等。
示例输出1.csv:
Text ID
this is sample text, AAAA
this is sample text, AAAA
this is sample text, AAAA
this is sample text, AAAA
this is sample text, AAAA
this is sample text4, DDDD
this is sample text4, DDDD
示例输出2.csv:
Text ID
this is sample text2, BBBB
this is sample text2, BBBB
this is sample text2, BBBB
this is sample text5, EEEE
this is sample text5, EEEE
示例输出3.csv:
Text ID
this is sample text3, CCCC
this is sample text6, FFFF
this is sample text6, FFFF
ID
列是否总是按照排序值排列?如示例所示。 - RavinderSingh13