我找到的大多数解决方案是获取数据框中唯一项的数量(我不想要),或者按具有清晰标题的列进行计数。
我的数据框如下:
1 2 3 4
ILLU1 ATG --T --- TGG
ILLU2 ATG -CT GGG TGG
ILLU3 ATG TTT AAA TGG
ILLU4 -TG --T --- T-G
我试图获取每一行的计数,其中每一列都有一个完整的3个碱基的序列。因此,如果单元格中存在“-”,则它将为零(这包括“ ---”,“-N”,“-NN”)。
所以我试图将输出如下:
ILLU1 2
ILLU2 3
ILLU3 4
ILLU4 0
我尝试过:
df_new = pd.DataFrame() # to hold the final values
count = 0
for rows in df:
if not sum(df[rows].str.contains("-")) > 0: # if no hyphen present
count += 1 # add to final count
else:
count = count # does not get included final count
df_new["Final Count"] = count
print(df_new)
但是我只是得到一个没有值的空数据框。
答案 0 :(得分:5)
使用str.contains
s=(~df.apply(lambda x : x.str.contains('-'))).sum(1)
s
Out[384]:
ILLU1 2
ILLU2 3
ILLU3 4
ILLU4 0
dtype: int64
答案 1 :(得分:3)
您可以使用:
df.apply(lambda x: ['-' not in i for i in x]).sum(1)
OR
df.apply(lambda x: ['-' in i for i in x]).ne(1).sum(1)
输出:
ILLU1 2
ILLU2 3
ILLU3 4
ILLU4 0
dtype: int64