我将以下数组列表作为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
谢谢
答案 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