计算列表数组中特定元素的总出现次数

时间:2019-12-05 08:46:49

标签: python pandas

我将以下数组列表作为for循环的输出。如何计算每个列表中的真假总数(分别)。

[array(['false', 'false', 'false', 'true', 'true', 'true', 'false', 'true',
       'false', 'true', 'false', 'false'], dtype='|S5')]
[array(['false', 'false', 'false', 'true', 'true', 'true', 'false', 'true',
       'false', 'true', 'false', 'false'], dtype='|S5')

生成此输出的代码是:

for df in df_elements:
        cutoff_list_neg.append(np.where((df['score'])>=0, 'true', 'false'))
        print cutoff_list_neg

df_elements是数据帧的列表:

[                          seq  score    status
 2911  TCATCCCGATTTTGATGCATCTA  -2.96  negative
 3477                ATGGCACTG  -3.60  negative
 178                 TTAGAAAGC  -3.78  negative
 4667  CTAATGATGATGCTCTTCAGTAC   2.01  negative
 1401  ACTGACTTCTTTAAATGAAGAGT   1.67  negative
 351   ATCTGCTCTTCGTGTTGAAGAAG   4.32  negative
 3678  AAGGATCGCTATGGCTCCTGGAT  -5.39  negative
 2294  ATTATCTTTAACTGATGAAGAGC   0.15  negative
 5378  TCATCTCTCTGAAAAACAAGATA  -1.88  negative
 4290  AACCTGCAATCCGGAACCAGATC   2.72  negative
 3353                CCGATGGGC  -1.97  negative
 4124  CGGACATTGCCGAGTCCCAGGTC  -2.31  negative,
                           seq  score    status
 2787                AAGGTTGGC   6.10  negative
 5378  TCATCTCTCTGAAAAACAAGATA  -1.88  negative
 3928                AGCGAAACG  -7.32  negative
 3678  AAGGATCGCTATGGCTCCTGGAT  -5.39  negative
 1607  AGGCACAACTTATGTAACAGATA   2.32  negative
 4685  TGCTCTTCAGTACGTTGAAGAAT  -2.35  negative
 1652  TGGCTTCGATTTTGTTATCGATG  -0.22  negative
 3477                ATGGCACTG  -3.60  negative
 275   TCTGTTGGGTTTTCATACAGCTA   7.11  negative
 3769  CAGGTGAGCTGTCGCGGCAGCTG   0.98  negative
 663   TATTAAGTATTCTCTAGCAGACC   3.61  negative
 1855                TTCGGATGC  -6.88  negative
Desired output is:
item   True    False
df1    5       7
df2    5       7

谢谢

1 个答案:

答案 0 :(得分:0)

我相信您需要使用Series.value_counts来理解列表:

cutoff_list_neg = [(df['score']>=0).value_counts() for df in df_elements]

循环版本:

cutoff_list_neg = []
for df in df_elements:
    val = (df['score']>=0).value_counts()
    cutoff_list_neg.apprnd(val)

然后使用concat进行转置并重命名索引名称:

df = (pd.concat(cutoff_list_neg, axis=1, ignore_index=True)
        .T
        .rename(lambda x: 'df{}'.format(x + 1)))
print (df)
     False  True 
df1      7      5
df2      7      5