使用Pandas替代read_html中的infer_types

时间:2016-05-06 07:02:22

标签: python python-2.7 pandas

多年前我在v15.0之前使用过pandas read_html,使用了infer_types=False>>>import pandas as pd >>>html1 = '<table> <thead> <tr> <th>C1</th> <th>C2</th> <th>C3</th> </tr> </thead> <tr> <td>$1.0</td> <td>1G</td> <td>50.0</td> </tr> <tr> <td>$73.0</td> <td>2</td> <td>94.0</td> </tr> </table>' >>>html2 = '<table> <thead> <tr> <th>C1</th> <th>C2</th> <th>C3</th> </tr> </thead> <tr> <td>$4.0</td> <td>1</td> <td>42.0</td> </tr> <tr> <td>$33.0</td> <td>2.2</td> <td>50.0</td> </tr> </table>' >>>df1 = pd.read_html(html1) >>>df1[0].dtypes 0 object 1 object 2 float64 >>>df2 = pd.read_html(html2) >>>df2[0].dtypes 0 object 1 float64 2 float64 的选项。

显然,对此的支持是v12.0 documentation

以下是我现在面临的一个例子:

df1

正如您可以看到我在C2列中遇到的麻烦。在object中,列dtype被解析为df2(由于第0个索引中存在G),而在int64中,列dtype被解析为df1 = df1.astype("object") df2 = df2.astype("object") (由于存在小数位数。)

我提出的解决方案是:

int

我对此解决方案的问题是,如果我在列中有floatint,我想保留read_html但{{{ 1}}自动将int值推断为float,当我将列的dtype更改为strobject时,数字为int的事实未能以字符串格式恢复为该格式。

我的问题是,如何处理html并对Pandas中17.0以后版本的数据类型设置限制。

0 个答案:

没有答案