Python 如何按行获取pandas数据框中非唯一项的计数?
我找到的大多数解决方案是获取数据帧中唯一项(我不想要)的计数,或者按标题清晰的列进行计数 我的数据框架如下所示:Python 如何按行获取pandas数据框中非唯一项的计数?,python,pandas,Python,Pandas,我找到的大多数解决方案是获取数据帧中唯一项(我不想要)的计数,或者按标题清晰的列进行计数 我的数据框架如下所示: 1 2 3 4 ILLU1 ATG --T --- TGG ILLU2 ATG -CT GGG TGG ILLU3 ATG TTT AAA TGG ILLU4 -TG --T --- T-G ILLU1 2 ILLU2 3 ILLU3 4 ILLU4 0 我试图获得每行的计数,其中每列都有一个完整的3碱基序列。因此,如果单元格中存在“-”,它将是零(包括
1 2 3 4
ILLU1 ATG --T --- TGG
ILLU2 ATG -CT GGG TGG
ILLU3 ATG TTT AAA TGG
ILLU4 -TG --T --- T-G
ILLU1 2
ILLU2 3
ILLU3 4
ILLU4 0
我试图获得每行的计数,其中每列都有一个完整的3碱基序列。因此,如果单元格中存在“-”,它将是零(包括“---”、“N”、“NN”)
因此,我尝试如下输出:
1 2 3 4
ILLU1 ATG --T --- TGG
ILLU2 ATG -CT GGG TGG
ILLU3 ATG TTT AAA TGG
ILLU4 -TG --T --- T-G
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)
但是我只得到一个没有值的空数据帧。使用
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
使用
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
您可以使用:
df.apply(lambda x: ['-' not in i for i in x]).sum(1)
或
输出:
ILLU1 2
ILLU2 3
ILLU3 4
ILLU4 0
dtype: int64
您可以使用:
df.apply(lambda x: ['-' not in i for i in x]).sum(1)
或
输出:
ILLU1 2
ILLU2 3
ILLU3 4
ILLU4 0
dtype: int64
“~”符号在这里是什么意思?@DNAngel变假为真,变假为真我从来不知道,这是多么有用的小道消息啊!我会试一试,让你知道谢谢@DNAngel yw:-)快乐编码这里的“~”符号是什么意思?@DNAngel变假为真,变假为真我从来不知道,这是多么有用的小道消息!我会试一试,让你知道谢谢@DNAngel yw:-)快乐编码