Python 将CSV值合并到一行,然后附加到新CSV
我目前已将数据拆分为CSV文件,需要将列“序列”的所有行合并为一个字符串 每个CSV看起来如下所示:Python 将CSV值合并到一行,然后附加到新CSV,python,csv,Python,Csv,我目前已将数据拆分为CSV文件,需要将列“序列”的所有行合并为一个字符串 每个CSV看起来如下所示: 1773.csv ID Order Sequence 1773 1 'AAGG' 1773 2 'TTGG' 1773 3 'GGAA' 1775.csv ID Order Sequence 1775 1 'GGTT' 1775 2 'AAGT' 1
1773.csv
ID Order Sequence
1773 1 'AAGG'
1773 2 'TTGG'
1773 3 'GGAA'
1775.csv
ID Order Sequence
1775 1 'GGTT'
1775 2 'AAGT'
1775 3 'TGAA'
1331.csv
ID Order Sequence
1331 1 'CCGT'
1331 2 'CATT'
1331 3 'GTTA'
ID Sequence
1773 'AAGGTTGGGGAA'
我需要每个CSV将每个序列行合并为一个值,如下所示:
1773.csv
ID Order Sequence
1773 1 'AAGG'
1773 2 'TTGG'
1773 3 'GGAA'
1775.csv
ID Order Sequence
1775 1 'GGTT'
1775 2 'AAGT'
1775 3 'TGAA'
1331.csv
ID Order Sequence
1331 1 'CCGT'
1331 2 'CATT'
1331 3 'GTTA'
ID Sequence
1773 'AAGGTTGGGGAA'
然后从每个CSV文件中生成所有组合序列的主CSV
大概是这样的:
ID Sequence
1773 'AAGGTTGGGGAA'
1775 'GGTTAAGTTGAA'
1331 'CCGTCATTGTTA'
我不会太担心order列,因为行已经按顺序排列好了+文件夹中的每个CSV都只是它的ID
我发现了这一点,但它似乎将所有csv文件中的所有数据合并到一个单元格/值中:
def return_contents(file_name):
with open(file_name) as infile:
reader = csv.reader(infile)
return list(reader)
all_files = os.listdir('C:\\Users\\CAAVR\\Desktop\\res_csv')
combined_output = []
for file in all_files:
data = return_contents('C:\\Users\\CAAVR\\Desktop\\res_csv\\{}'.format(file))
for row in data:
combined_output.extend(row)
with open('csv_out.csv', 'w', newline='') as outfile:
writer = csv.writer(outfile)
writer.writerow(combined_output)
提前感谢,如果您需要更多信息,请告诉我。我将使用熊猫完成此任务
pandas.read_csv("input.dat").groupby("id")['Sequence'].agg('sum').to_csv('output.dat')
我想我会照你说的做
我发现了这一点,但它似乎将所有数据合并到一行中:
[...]
combined_output.extend(row)
extend
将行
中的所有项目分别添加到组合输出
,丢失它们曾经属于一起的信息,并创建一个单一的平面列表
相反,您应该使用append
。它将行
添加到组合输出
,同时将行
的项目保留在它们自己的列表中。结果是一个列表列表,其中每个子列表表示输出CSV中的一行
请参阅。好吧,这详细说明了您需要什么,但没有说明您尝试了什么以及您面临的问题。它也没有给出答案,因为输入序列中没有“GGTT”,我已经添加了一些我尝试过的代码。不过,我对你的第二条评论不是100%。如果您指的是主csv,这将是另一个组合序列,谢谢您的编辑。我评论的第二部分是,例子应该是自相矛盾的。你怎么能从第一个代码块中列出的内容中期待
'ggttaagtgaa'
<代码>“GGTT”恰好是一个突出的序列,但是还有其他的例子。我添加了输入。我在非拆分文件上尝试了这一点,虽然它去掉了额外的ID和顺序值,但似乎并没有实际组合字符串。只需添加另一行字符串。是否要对拆分的字符串执行此操作并将其添加到新文件中?是否知道为什么这会在我的主数据集上给我一个解析器错误?您可能需要指定分隔符或其他东西这似乎会给我一个所有文件的输出csv组合成一个文件,每行组合成一列。而不是将每个csv的行合并为一行。这有意义吗?“而不是将每个csv的行组合成一行。”我认为这就是您显示的代码所做的,这是您不希望看到的。很抱歉造成混淆。从每个分割csv中,我需要将每个“序列”值组合成一行。然后将该行作为单个行添加到所有行的列表中。我在问题中的代码将所有csv文件中的所有行合并为一个值。append版本似乎仍然将enire行合并为一个值。希望这能把事情弄清楚。