我有一个由制表符分隔的文件,有四列。我需要为“col1”和“col2”中的每个唯一值对组合“col3”和“col4”。示例和输出如下所示。在
我想到的一种方法是使用嵌套循环:外部循环按顺序读取行,而内部循环从开始处读取所有行并查找map。然而,这个过程似乎是计算密集型的。在
有没有其他方法可以做这个。在
col1 col2 col3 col4
a c 1,2 physical
a c 2,3 genetic
b c 22 physical
b d 33,44 genetic
c e 1,2 genetic
c e 2 physical
c f 33,44 physical
c f 3 genetic
a a 4 genetic
e c 1,2 xxxxx
col1 col2 col3 col4
a c 1,2,3 genetic,physical
a a 4 genetic
b c 22 physical
b d 33,44 genetic
c e 1,2 genetic,physical,xxxxx
c f 3,33,44 genetic,physical
如果“col1”和“col2”按上面最后一行中的值“xxxxx”进行切换,则它将合并值
@mgilson给出了一个很好的无需额外零件的解决方案(+1)。我看到
pandas
也被标记了,所以为了完整起见,我将给出一个pandas
等价物:产生
^{pr2}$所有这些操作都是(1)对前两列进行排序,使},(2)按}对术语进行分组,然后通过逗号连接已排序的扁平项集来聚合(}。在
e c
变成{col
和{agg
)col3
和{groupby
对于这样的事情确实很方便。也可能有一个内置的替代join_strings
函数,但我不确定。在我将创建一个键字典,它是保存column1和column2数据的元组。值将是一个包含第3列和第4列数据的列表。。。在
现在排序并编写输出(用
^{pr2}$','
连接column3和column4列表,用set
和sorted
进行唯一排序)相关问题 更多 >
编程相关推荐