2017-04-03 14 views
5

我想檢查數據框中的列是否包含字符串。我原以爲這可以通過檢查dtype來完成,但事實並非如此。包含字符串只是一個熊貓系列具有D型「對象」,它也用於其他的數據結構(如列表):檢查數據系列是否爲字符串

df = pd.DataFrame({'a': [1,2,3], 'b': ['Hello', '1', '2'], 'c': [[1],[2],[3]]}) 

df = pd.DataFrame({'a': [1,2,3], 'b': ['Hello', '1', '2'], 'c': [[1],[2],[3]]}) 
print(df['a'].dtype) 
print(df['b'].dtype) 
print(df['c'].dtype) 

產地:

int64 
object 
object 

是否有檢查,如果一些方法列只包含字符串?

回答

7

你可以用它來查看是否在列中的所有元素都是字符串

df.applymap(type).eq(str).all() 

a False 
b  True 
c False 
dtype: bool 

要只檢查如果有任何字符串

df.applymap(type).eq(str).any() 
0

您可以映射與函數的數據將所有如果元素與str類型相同,則將元素設置爲True或False,然後檢查列表是否包含任何False元素

下面的示例測試列表包含另外一個str的元素。它會告訴你True如果其他類型的數據存在

test = [1, 2, '3'] 
False in map((lambda x: type(x) == str), test) 

輸出:True