【问题标题】:pandas.Int64Index fix for FutureWarningpandas.Int64Index 修复 FutureWarning
【发布时间】:2022-10-13 23:10:23
【问题描述】:

刚刚为我从 excel 加载的数据框收到了这个新警告。

我知道如果我要 pd.DataFrame 我可以设置索引,但我不清楚从文件加载时如何设置数据帧索引类型。

C:\python\python38\lib\site-packages\geopandas\io\file.py:362: FutureWarning: pandas.Int64Index 已弃用,将在未来版本中从 pandas 中删除。改为使用具有适当 dtype 的 pandas.Index。

课堂摘录:

xls = pd.ExcelFile('C:/QGISwork/generic_templates/fielddbtemplate_db.xlsx')
        self.header = xls.parse('generic', header = None)
        self.df = xls.parse('generic', skiprows=4, index_col=0, na_values=['NA'])

【问题讨论】:

  • 有谁知道是否有办法指定索引数据类型,以便我可以专门选择 int() 或类似的东西来避免这个烦人的警告?
  • 也许已经找到解决方案,将尽快发布。

标签: python excel pandas dataframe


【解决方案1】:

我在本地机器上训练 XGBoostClassifier 时遇到了同样的问题。

按照这个link,我将我的XGBoost版本从1.5.1升级到1.6.1,所有这些警告都消失了。

要升级版本,您首先需要使用卸载当前的 XGBoost 包

pip3 卸载 xgboost

接下来,使用重新安装 XGBoost

pip3 安装 xgboost

【讨论】:

  • 感谢您的评论,不幸的是我没有使用 xgboost .. 所以不是真正的问题案例。
【解决方案2】:

我发现这个警告来自 xgboost compat.py 。我注释掉了 multiindex 和 index64index 的导入部分 警告消失了
其原因可能是 xgboost 甚至最新版本都没有考虑 pandas 新版本中的弃用。

【讨论】:

  • 感谢您的评论,不幸的是我没有使用 xgboost .. 所以不是真正的问题案例。
【解决方案3】:

我发现避免此警告的最佳方法是先导入 pandas,然后在导入任何其他依赖于 Panda 索引的库之前导入 MultiIndex 和 Int16Dtype。这就是我摆脱警告的方式。

import pandas as pd 
from pandas import MultiIndex, Int16Dtype
import xgboost as xgb

就我而言,xgboost 需要索引参考。在您的情况下,它可能是 geopandas 库。

【讨论】:

  • 这对我不起作用。
【解决方案4】:

仅通过导入 xgboost 也会生成警告。除非您使用“警告”库明确禁止警告,否则没有明显的方法可以停止警告。

有趣的是,警告仅在使用特定 Int64Index 方法时生成,而不是等效对象时生成。我认为除非您使用这种方法,否则您不必担心问题。

【讨论】:

    【解决方案5】:

    我的包有 Pandas 1.5.0、LightGBM 2.3.1。出现 Int64Index、Float64Index 和 uInt64Index 错误 当我尝试 df.info()、df['target'].sum().compute() 和 df['target'].value_counts().compute() 时。 然后,我修改了“PycharmProjects/pythonProject/venv/lib/python3.10/site-packages/dask/dataframe/utils.py”行:367: “_numeric_index_types = pd.Index”

    【讨论】:

      猜你喜欢
      • 2021-03-19
      • 2019-04-19
      • 1970-01-01
      • 2022-11-10
      • 1970-01-01
      • 2019-02-25
      • 2021-12-01
      • 2016-05-11
      • 1970-01-01
      相关资源
      最近更新 更多