【发布时间】:2021-08-02 00:57:15
【问题描述】:
我有一个 groupby 对象
ref query_x query_y
ANN00118-RA Charonia_GIQZ01011680.1.p1 Typhlosyrinx_Contig7942.p1
ANN00127-RA Charonia_GIQZ01023156.1.p1 Typhlosyrinx_Contig11188.p1
ANN00130-RA Charonia_GIQZ01000168.1.p1 Typhlosyrinx_Contig15281.p1
数据按“ref”列分组。碰巧很多行都有相同的引用,例如
test.get_group('ANN12010-RA')
query_x ref query_y
0 Charonia_GIQZ01000001.1.p1 ANN12010-RA Typhlosyrinx_Contig13935.p1
1 Charonia_GIQZ01000001.1.p1 ANN12010-RA Typhlosyrinx_Contig13936.p1
2 Charonia_GIQZ01000001.1.p1 ANN12010-RA Typhlosyrinx_TRINITY_DN17744_c0_g2_i1.p1
3 Charonia_GIQZ01000001.1.p1 ANN12010-RA Typhlosyrinx_TRINITY_DN18267_c0_g1_i1.p2
如您所见,第二列具有相同的值 ANN12010-RA,我想在其自己的文件中打印每个“参考”块,在一行上。示例的预期输出
ANN12010-RA Charonia_GIQZ01000001.1.p1 Typhlosyrinx_Contig13935.p1 Charonia_GIQZ01000001.1.p1 Typhlosyrinx_Contig13936.p1 Charonia_GIQZ01000001.1.p1 Typhlosyrinx_TRINITY_DN17744_c0_g2_i1.p1 Charonia_GIQZ01000001.1.p1 Typhlosyrinx_TRINITY_DN18267_c0_g1_i1.p2
元素的顺序并不重要。每行的列数可以变化,我不知道每组有多少个元素。
实现这一目标的最佳方法是什么?知道 groupby 对象可能有数千行。
非常感谢
使用我得到的答案
group_df.head()
index 0 1 2 3 4 5 6 7 8 9 ... 845 846 847 848 849 850 851 852 853 854
ref
ANN12010-RA Charonia_GIQZ01000001.1.p1 Typhlosyrinx_Con... Charonia_GIQZ01000001.1.p1 Typhlosyrinx_Con... Charonia_GIQZ01000001.1.p1 Typhlosyrinx_TRI... Charonia_GIQZ01000001.1.p1 Typhlosyrinx_TRI... Charonia_GIQZ01000001.1.p1 Typhlosyrinx_TRI...
ref 元素应该是行的一个元素,或者至少我应该能够打印它(我认为这是可能的)。唯一剩下的问题是,列是由成对的值而不是单个值组成的。作为输出,我想打印一个每行一个元素的文件。好的,我可以使用 awk 将 2 列输出转换为 1 列输出,但我想我会在 Python 中进行计算。
而且我希望我的输出文件的名称为“ref”,因此我的输出理想情况下是具有单列的单个文件,并且该文件将命名为 ANN12010-RA。
这有意义吗?
【问题讨论】:
标签: python-3.x pandas group-by pandas-groupby