python - 根据字符串是否由特定字母组成来过滤数据框

标签 python arrays pandas dataframe

所以我的数据框看起来像这样

注意我在**里放了不同的字母,方便你看

      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/

相关文章:

python - PySide2 findChild 不返回任何内容

python - 从坐标元组列表中选择最小值

无法从另一台计算机访问 Windows 7 上的 Python 套接字

javascript - 如何在 javascript 中使用数组中的数据填充和对象

Python 具有条件的数据帧的聚合总和

python - 如何删除两列之间的重复项,但在各自的列中保留唯一值?

python - 计算时间序列数据中连续天数和缺失天数的总数

python - Tweepy - 排除转推

javascript - 将数字(即 5)转换为数组的长度

java - 使用startsWith() 搜索数组