2

拥有这个 pandas.core.frame.DataFrame:

Gorilla     A  T  C  C  A  G  C  T
Dog         G  G  G  C  A  A  C  T
Humano      A  T  G  G  A  T  C  T
Drosophila  A  A  G  C  A  A  C  C
Elefante    T  T  G  G  A  A  C  T
Mono        A  T  G  C  C  A  T  T
Unicornio   A  T  G  G  C  A  C  T

我想得到一个这样的数据框:

    A   5 1 0 0 5 5 0 0
    C   0 0 1 4 2 0 6 1
    G   1 1 6 3 0 1 0 0
    T   1 5 0 0 0 1 1 6 

基本上,我想要的是逐列计算频繁的列并创建第二个 df,如我所示。

我想这样做是因为最后,我想获得一个共识字符串。应该是这样的 ATGCAACT

任何人都可以帮助我或给我一些建议吗?

4

2 回答 2

2

您可以按列使用Series.value_counts

print(df.iloc[:, 1:].apply(pd.Series.value_counts).fillna(0))

输出

     1    2    3    4    5    6    7    8
A  5.0  1.0  0.0  0.0  5.0  5.0  0.0  0.0
C  0.0  0.0  1.0  4.0  2.0  0.0  6.0  1.0
G  1.0  1.0  6.0  3.0  0.0  1.0  0.0  0.0
T  1.0  5.0  0.0  0.0  0.0  1.0  1.0  6.0
于 2019-12-04T12:58:50.500 回答
2

尝试:

result = df.apply(pd.value_counts).fillna(0)

   col1  col2  col3  col4  col5  col6  col7  col8
A   5.0   1.0   0.0   0.0   5.0   5.0   0.0   0.0
C   0.0   0.0   1.0   4.0   2.0   0.0   6.0   1.0
G   1.0   1.0   6.0   3.0   0.0   1.0   0.0   0.0
T   1.0   5.0   0.0   0.0   0.0   1.0   1.0   6.0
于 2019-12-04T13:03:22.657 回答