【问题标题】:Accessing a cell in a pandas DataFrame with MultiIndex loses type information使用 MultiIndex 访问 pandas DataFrame 中的单元格会丢失类型信息
【发布时间】:2021-07-29 20:31:46
【问题描述】:

当我用MultiIndex 创建熊猫DataFrame 时,访问单个单元格会丢失类型信息:

df2 = pd.DataFrame([{"a":1.0,"b":2,"c":3,"d":4}]).set_index(["c","d"])

df2.dtypes

a    float64
b      int64
dtype: object

df2.loc[(3,4),"b"] 返回 2.0 类型的 numpy.float64 而不是 2 类型的 numpy.int64

参照

df1 = pd.DataFrame([{"a":1.0,"b":2,"c":3}]).set_index("c")

其中df1.loc[3,"b"] 返回2 类型为numpy.int64

这是bug 还是我做错了什么?

注意at(用于代替loc)为df1df2 返回正确类型的值。

【问题讨论】:

    标签: python pandas dataframe types


    【解决方案1】:

    我的意见 - 可能,但不是很好:

    a = df2.loc[[(3,4)],"b"].iat[0]
    print (a)
    2
    

    【讨论】:

    • 是的,这使用与您的other answer 相同的技术。它创建了一个中间单元素系列。但是,它没有回答以下问题:这是一个错误还是我做错了什么?.
    • @sds - 我认为这里有错误。
    猜你喜欢
    • 1970-01-01
    • 2012-10-02
    • 2021-12-24
    • 2015-06-20
    • 2021-08-21
    • 2022-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多