2015-03-31 20 views
9

Hiç bu kadar sık ​​veri dosyalarını ayrıştırma zaman bu uyarıyı alıyorum: d_type değişikliği meydana verilerde NEREDEPandalar sütunlarında karışık türleri bulmak için iyi bir strateji nedir?

WARNING:py.warnings:/usr/local/python3/miniconda/lib/python3.4/site- 
packages/pandas-0.16.0_12_gdcc7431-py3.4-linux-x86_64.egg/pandas 
/io/parsers.py:1164: DtypeWarning: Columns (0,2,14,20) have mixed types. 
Specify dtype option on import or set low_memory=False. 
      data = self._reader.read(nrows) 

Ama veri büyükse (ı 50 bin satırlık var), nasıl bulabilirim?

cevap

13

Neyin peşinde olduğunuzdan emin değilim, ancak ilk satırın türünü paylaşmayan öğeler içeren satırları bulmak için yeterince kolaydır. Örneğin:

bir sayıda sütunlu dataframe ile DSM cevap ek olarak,
>>> df = pd.DataFrame({"A": np.arange(500), "B": np.arange(500.0)}) 
>>> df.loc[321, "A"] = "Fred" 
>>> df.loc[325, "B"] = True 
>>> weird = (df.applymap(type) != df.iloc[0].apply(type)).any(axis=1) 
>>> df[weird] 
     A  B 
321 Fred 321 
325 325 True 
+0

, ama sadece 'type' yerleşik işlevini uygulamak için tıklamadım. Teşekkürler! –

1

o kadar gibi türünü değiştirmek sütunları bulmak için yararlı olabilir:

aklımdan aynen böyle
for col in df.columns: 
    weird = (df[[col]].applymap(type) != df[[col]].iloc[0].apply(type)).any(axis=1) 
    if len(df[weird]) > 0: 
     print(col) 
İlgili konular