首页 > 解决方案 > 检查 DataFrame 列是否仅包含字符串

问题描述

假设我有一个 DataFrame df

     A     B
0    a     1
1    a1    3
2    b_    5
3    c(    7

我只想从作为A字符串的列中获取这些元素(例如作为列表),所以在这种情况下只会a返回。我想过,.str.contains()但我宁愿使用基于类型的东西。

标签: pythonpandas

解决方案


使用正则表达式 with^作为字符串的开头,然后使用字母a-zA-Zlast$作为字符串的结尾Series.str.contains

df = df[df['A'].str.contains('^[a-zA-Z]$')]
print (df)
   A  B
0  a  1

如果想要A过滤列列出:

L = df.loc[df['A'].str.contains('^[a-zA-Z]$'), 'A'].tolist()
print (L)
['a']

编辑:

print (df)
      A  B
0   a d  1
1  a gh  3
2    b_  5
3    c(  7

#https://stackoverflow.com/a/18752121/2901002
df = df[~df['A'].str.contains('[^A-Za-z\s]')]
print (df)
      A  B
0   a d  1
1  a gh  3

推荐阅读