所以我的数据框看起来像这样
注意我在**里放了不同的字母,方便你看
id genome
0 639 ATGTTTGTTTTT*Y*TTGTTTTATATGTTTGTTTTTCTTGTTTTATATGTTTGTTTTTCTTGTTTTAT
1 640 ATGTTTGTTTTT*J*TTGTTTTATATGTTTGTTTTTCTTGTTTTATATGTTTGTTTTTCTTGTTTTAT
2 641 ATGTTTGTTTTTCTTGTTTTATATGTTTGTTTTTCTTGTTTTATATGTTTGTTTTTCTTGTTTTAT
3 642 ATGTTTGTTTTTCTTGTTTTATATGTTTGTTTTTCTTGTTTTATATGTTTGTTTTTCTTGTTTTAT
我想按字符串过滤它。基本上,如果字符串包含除 A、C、T、G、N 之外的任何其他字母,请将此行保留在数据框中,否则只需删除它。
我正在绑这个
df = df[~df['genome'].str.contains('[^ACTGN]')]
还有这个
df = df[df['genome'].str.match('^[ACTGN]+$')]
但是没有什么接缝可以工作,我得到的只是所有行都是 true 或 false,尽管有不同的字母
最佳答案
看起来你的字符串有前导/尾随空格(查看打印输出中的那些对齐方式)。所以尝试一下:
df['genome'] = df['genome'].str.strip()
df = df[~df['genome'].str.contains('[^ACTGN]')]
或者,如果您不想修改 genome
列,也可以将它们链接起来:
df = df[df[~df['genome'].str.strip().str.contains('[^ACTGN]')]
关于python - 根据字符串是否由特定字母组成来过滤数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66052235/