2015-03-31 12 views
9

真叫我常常解析數據文件時,得到這樣的警告:什麼是在熊貓列中找到混合類型的好策略?

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) 

但是,如果數據是大(我有5萬行),我怎麼能找到其中的數據D型的變化發生?

回答

13

我不完全確定你在做什麼,但很容易找到包含不共享第一行類型的元素的行。例如:

>>> 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

這正是我在想,但沒有點擊只是應用'type'內置函數。謝謝! – 2015-03-31 23:18:28

1

除DSM的答案,有許多列數據幀它可以幫助找到改變類型,像這樣的列:

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)