Pandas 数据框架 mypy 错误:切片索引必须是整数或 None

6

The following line

pd.DataFrame({"col1": [1.1, 2.2]}, index=[3.3, 4.4])[2.5:3.5]

[2.5处引发了mypy代码检查错误。

切片索引必须是整数或None。

这是有效的语法并正确返回结果。

     col1
3.3   1.1

没有使用# type: ignore,我该如何解决这个linting错误?

版本信息:

  • pandas 1.3.0
  • mypy 0.931

相关代码:

def get_dataframe(
    ts_data: GroupTs,
    ts_group_name: str,
    start_time: Optional[float] = None,
    end_time: Optional[float] = None,
) -> pd.DataFrame:
    df = pd.DataFrame(ts_data.group[ts_group_name].ts_dict)[
        start_time:end_time
    ].interpolate(
        method="index", limit_area="inside"
    )  # type: pd.DataFrame
    return df[~df.index.duplicated()]
1个回答

5

目前来说,这是按设计的,但如果必须的话,你可以使用可调用对象进行切片来消除mypy的警告,像这样:

import pandas as pd

df = pd.DataFrame({"col1": [1.1, 2.2]}, index=[3.3, 4.4])[
    lambda x: (2.5 <= x.index) & (x.index < 3.5)
]

print(df)
# Ouput
     col1
3.3   1.1

因此,mypy在此代码上报告未发现问题


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接