在Pandas专栏中找到混合类型的好策略是什么?

问题描述 投票:13回答:2

我经常在解析数据文件时收到此警告:

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)

但是如果数据很大(我有50k行),我如何在数据中找到dtype的变化?

python pandas
2个回答
17
投票

我不完全确定你所追求的是什么,但是很容易找到包含不共享第一行类型的元素的行。例如:

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

3
投票

除了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)
© www.soinside.com 2019 - 2024. All rights reserved.