【问题标题】:TypeError: 'float' object does not support item assignment & Pandas SlicingTypeError:'float' 对象不支持项目分配和 Pandas 切片
【发布时间】:2022-01-25 14:39:07
【问题描述】:

一个 TypeError 出现在 For 循环中。 For 循环的键 yrmon 被分配给列“YEAR”(avg_temp["YEAR"])。 yrmon 包含一个 6 个字符的字符串,“YEAR”列包含一个 8 位数值。奇怪的是,代码是从课程中提取的;我只是重新输入了它。我不确定我打错了什么。

课程和存储库可以在以下位置找到:
https://geo-python.github.io/site/notebooks/L6/advanced-data-processing-with-pandas.html
https://github.com/Geo-Python-2020/Exercise-6
我建议将重点放在“字符串切片”和“For 循环和分组对象”之间。我通过电子邮件和 LinkedIn 联系了讲师。

我查看了两个 TypeError 帖子。由于我的新手理解,我无法确定它们的相关性。

感谢您的集体时间!下面是代码:

import pandas as pd

data = pd.read_csv('data/1091402.txt', skiprows=[1], delim_whitespace=True, na_values='******')

monthly_data = None

data["DT_YM_SL"] = data["DATE"].astype(str)
data["DT_YM_SL"] = data["DT_YM_SL"].str.slice(start=0, stop=6)

grouped = data.groupby(["DT_YM_SL"])

for yrmon, group in grouped:
    avg_temp = group['TAVG'].mean()
    avg_temp["YEAR"] = yrmon
    monthly_data = monthly_data.append(avg_temp, ignore_index=True)
    

【问题讨论】:

    标签: python for-loop pandas-groupby


    【解决方案1】:
    avg_temp = group['TAVG'].mean()
    

    avg_temp 是 'TAVG' 列的平均值,它是浮点数,因为 mean() 方法返回一个浮点数,在 FOR 循环的第一次迭代中等于 ~29.48。所以,这行代码:

    avg_temp["YEAR"] = yrmon
    

    变成

    29.48["YEAR"] = '195201'
    

    这在 Python 中是不可能的。

    【讨论】:

    • 谢谢你,伊姆兰。我应该考虑如何将 avg_temp 从浮点数转换为整数?
    • 将 avg_temp 从浮点数转换为整数是没有用的。
    • 很好,伊姆兰。请问代码有什么需要修改的?
    猜你喜欢
    • 2020-10-09
    • 2016-07-31
    • 2014-02-18
    • 2017-03-26
    • 2021-08-05
    • 1970-01-01
    • 1970-01-01
    • 2022-08-08
    相关资源
    最近更新 更多