2017-04-03 22 views
5

मैं यह जांचना चाहता हूं कि डेटाफ्रेम में एक कॉलम में तार हैं या नहीं। मैंने सोचा होगा कि यह सिर्फ टाइप प्रकार की जांच करके किया जा सकता है, लेकिन ऐसा नहीं है।जांच कर रहा है कि कोई डेटा श्रृंखला स्ट्रिंग है

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) 

का उत्पादन: एक पांडा श्रृंखला है कि तार बस शामिल 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

आप एक समारोह के साथ डेटा मैप कर सकते हैं इसकी जांच करने के सभी बदल देता हैं तत्व सही या गलत के लिए हैं यदि वे स्ट्र-टाइप के बराबर हैं या नहीं, तो बस जांचें कि सूची में False तत्व

नीचे दिया गया उदाहरण एक सूची का परीक्षण करता है अन्य तत्व तो स्ट्र। यह आप True बताएगा कि यदि अन्य प्रकार के डेटा मौजूद है

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

आउटपुट: True

संबंधित मुद्दे