我试着比较两个CSV文件(下面还有更多类似的文件)。我尝试了很多方法,使用列表、听写器等等,但是没有任何东西能给我我所需要的输出。我要比较所有有相同的行!样片名和!附加值示例(其位置不同)。我已经为此挣扎了三天了,一直没能找到解决办法。我非常感谢你的帮助。在
CSV1:
!Sample_title,!Sample_geo_accession,!Sample_status,!Sample_type,!Sample_source_name_ch1
body,GSM501443,Public on july 22 2010,ribonucleic acid,FB_50_12wk
foreign,GSM501445,Public on july 22 2010,ribonucleic acid,FB_0_12wk
HJCENV,GSM501446,Public on july 22 2010,ribonucleic acid,FB_50_12wk
AsDW,GSM501444,Public on july 22 2010,ribonucleic acid,FB_0_12wk
CSV2:
^{pr2}$期望输出(相对于CSV2):
添加:
{!Sample_status:{HJCENV:Public on july 22 2010,AsDW:Public on july 22 2010}} #Added columns, not rows.
已删除:
{} #Since nothing's deleted with respect to CSV2
已更改:
{!Sample_title:AsDW,!Sample_source_name_ch1:(FB_0_12wk,FB_0),!Sample_geo_accession:GSM501444
!Sample_title:HJCENV,!Sample_type:(ribonucleic acid,RNA),!Sample_source_name_ch1:(FB_50_12wk,12wk),!Sample_geo_accession:GSM501446}
#foreign,ribonucleic acid,FB,GSM501449 doesn't come here since the !Sample_geo_accession column values didn't match.
编辑:
这里 添加的字典应该给出任何额外的列及其值!样品名称(何时!样片名和!CSV1和CSV2中的Sample_geo_accessment match,在CSV1中找到(如果它的列数多于CSV2)
Deleted dictionary执行与Added相似的操作,只是它查找已删除的列。在
Changed给出了文件及其头中不同的值。在
所以基本上它应该比较apple和apples(当头名称匹配时),而不是apples和oranges(按列位置)
你的问题仍然很难界定。首先我们得破译这个问题。 您说的是“diff two CSV files”,这通常意味着按行区分,可能首先是按索引列['对行进行重新排序!样品名称','!登录示例']
但实际上您需要列方面的差异。具体来说,您想知道在csv2中添加了哪些列,删除了哪些列,对于公共列,哪些条目(行)在csv2中发生了更改。 现在,你想让这些差异通过单个序列计算和呈现,还是同时跨所有列计算和显示?
如下所示:
输出:
^{pr2}$似乎您还需要我们对列进行重新排序,以便df1、df2的顺序相同。 但你还没告诉我们应该如何比较!示例“源代码”“名称”“ch1”,因为“FB”“0”“12wk”!=“12周”。在
在你弄清楚你的要求之前,我不会再做这个了。在
相关问题 更多 >
编程相关推荐