Python Django不断添加';字符到我的数据的第一个单元格,以便它可以';不要把它储存在模型里

Python Django不断添加';字符到我的数据的第一个单元格,以便它可以';不要把它储存在模型里,python,django,pandas,Python,Django,Pandas,我快发疯了。无论我做什么,Django都会在数据的第一个字段的开头添加一个“字符” 我有一个df,看起来是这样的: Year JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV \ 0 1910 6.1 7.2 8.9 9.6 14.5 17.1 17.3 16.9 15.6 12.5 6.9 1 1911 5.8 6.5 7.5 9.7

我快发疯了。无论我做什么,Django都会在数据的第一个字段的开头添加一个“字符”

我有一个df,看起来是这样的:

    Year   JAN   FEB   MAR   APR   MAY   JUN   JUL   AUG   SEP   OCT   NOV  \
0    1910   6.1   7.2   8.9   9.6  14.5  17.1  17.3  16.9  15.6  12.5   6.9   
1    1911   5.8   6.5   7.5   9.7  16.2  17.8  21.7  21.4  17.3  12.4   8.2   
2    1912   6.0   7.5   9.1  12.5  14.4  16.0  18.4  15.0  13.7  11.6   8.4   
3    1913   6.7   7.2   8.5  10.4  13.8  16.5  17.6  18.5  16.5  13.5  10.6   
4    1914   5.6   8.7   8.4  13.2  13.8  17.6  18.5  19.1  17.0  12.9   9.1   
5    1915   5.9   6.4   7.7  10.8  15.1  18.0  16.9  17.7  17.0  11.9   6.0   
6    1916   9.2   5.7   5.5  11.1  14.1  14.5  18.3  19.2  16.0  12.9   8.8   
7    1917   2.7   3.8   6.1   8.4  16.3  17.5  19.3  17.1  16.2  10.7   9.9   
8    1918   6.4   8.4   8.7  10.1  16.2  16.6  18.4  18.3  14.3  11.5   8.5 ...
我有一个函数将其放入模型中:

def add_to_db(weatherstats_df):
print(weatherstats_df)
for row in weatherstats_df.itertuples():
    # print(row)
    year = int(str(row.Year).strip('\''))
    print(year)
    measurement = row.Measurement
    location = row.Location

    ikey = 0

    for key, month_or_season in WeatherStatistics.MONTH_OR_SEASON:
        ikey += 1
        value = row[ikey]
        if (value == "---"):
            value = None

        WeatherStatistics(
            year=year,
            measurement_type=measurement,
            location=location,
            month_or_season=key,
            value=value,
        ).save()
模型如下所示:

year = models.IntegerField(
        default=0,
        validators=[MaxValueValidator(9999), MinValueValidator(0)],
    )
每次我运行此程序时,无论我如何尝试从“年度”中删除,我仍然会得到如下错误:

year = models.IntegerField(
        default=0,
        validators=[MaxValueValidator(9999), MinValueValidator(0)],
    )
无法将字符串转换为浮点:“1910”

我一定是在做傻事,但我不知道我哪里做错了

环境:

Request Method: GET
Request URL: http://127.0.0.1:8000/weatherstats/wales

Django Version: 1.11.7
Python Version: 3.6.3
Installed Applications:
['django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'weatherstats']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware']



Traceback:

File "/Users/davidthompson/miniconda3/lib/python3.6/site-packages/django/core/handlers/exception.py" in inner
  41.             response = get_response(request)

File "/Users/davidthompson/miniconda3/lib/python3.6/site-packages/django/core/handlers/base.py" in _legacy_get_response
  249.             response = self._get_response(request)

File "/Users/davidthompson/miniconda3/lib/python3.6/site-packages/django/core/handlers/base.py" in _get_response
  187.                 response = self.process_exception_by_middleware(e, request)

File "/Users/davidthompson/miniconda3/lib/python3.6/site-packages/django/core/handlers/base.py" in _get_response
  185.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "/Users/davidthompson/Documents/Web_Projects/Weather/src/weatherstats/views.py" in download_weather_stats_wales
  37.     weatherstats_df = parse_url_df(loc, loc_data, weather_attr)

File "/Users/davidthompson/Documents/Web_Projects/Weather/src/weatherstats/data_parsing.py" in parse_url_df
  32.         add_to_db(weatherstats_df)

File "/Users/davidthompson/Documents/Web_Projects/Weather/src/weatherstats/pandas_operations.py" in add_to_db
  62.                 value=value,

File "/Users/davidthompson/miniconda3/lib/python3.6/site-packages/django/db/models/base.py" in save
  808.                        force_update=force_update, update_fields=update_fields)

File "/Users/davidthompson/miniconda3/lib/python3.6/site-packages/django/db/models/base.py" in save_base
  838.             updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields)

File "/Users/davidthompson/miniconda3/lib/python3.6/site-packages/django/db/models/base.py" in _save_table
  924.             result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)

File "/Users/davidthompson/miniconda3/lib/python3.6/site-packages/django/db/models/base.py" in _do_insert
  963.                                using=using, raw=raw)

File "/Users/davidthompson/miniconda3/lib/python3.6/site-packages/django/db/models/manager.py" in manager_method
  85.                 return getattr(self.get_queryset(), name)(*args, **kwargs)

File "/Users/davidthompson/miniconda3/lib/python3.6/site-packages/django/db/models/query.py" in _insert
  1076.         return query.get_compiler(using=using).execute_sql(return_id)

File "/Users/davidthompson/miniconda3/lib/python3.6/site-packages/django/db/models/sql/compiler.py" in execute_sql
  1106.             for sql, params in self.as_sql():

File "/Users/davidthompson/miniconda3/lib/python3.6/site-packages/django/db/models/sql/compiler.py" in as_sql
  1059.                 for obj in self.query.objs

File "/Users/davidthompson/miniconda3/lib/python3.6/site-packages/django/db/models/sql/compiler.py" in <listcomp>
  1059.                 for obj in self.query.objs

File "/Users/davidthompson/miniconda3/lib/python3.6/site-packages/django/db/models/sql/compiler.py" in <listcomp>
  1058.                 [self.prepare_value(field, self.pre_save_val(field, obj)) for field in fields]

File "/Users/davidthompson/miniconda3/lib/python3.6/site-packages/django/db/models/sql/compiler.py" in prepare_value
  998.             value = field.get_db_prep_save(value, connection=self.connection)

File "/Users/davidthompson/miniconda3/lib/python3.6/site-packages/django/db/models/fields/__init__.py" in get_db_prep_save
  770.                                       prepared=False)

File "/Users/davidthompson/miniconda3/lib/python3.6/site-packages/django/db/models/fields/__init__.py" in get_db_prep_value
  762.             value = self.get_prep_value(value)

File "/Users/davidthompson/miniconda3/lib/python3.6/site-packages/django/db/models/fields/__init__.py" in get_prep_value
  1781.         return float(value)

Exception Type: ValueError at /weatherstats/wales
Exception Value: could not convert string to float: "'1910"
请求方法:获取
请求URL:http://127.0.0.1:8000/weatherstats/wales
Django版本:1.11.7
Python版本:3.6.3
已安装的应用程序:
['django.contrib.admin',
“django.contrib.auth”,
“django.contrib.contenttypes”,
“django.contrib.sessions”,
“django.contrib.messages”,
“django.contrib.staticfiles”,
“天气统计数据”]
已安装的中间件:
['django.middleware.security.SecurityMiddleware',
“django.contrib.sessions.middleware.SessionMiddleware”,
'django.middleware.common.CommonMiddleware',
“django.middleware.csrf.CsrfViewMiddleware”,
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.xframeoptions中间件']
回溯:
文件“/Users/davidthompson/miniconda3/lib/python3.6/site packages/django/core/handlers/exception.py”,位于内部
41响应=获取响应(请求)
文件“/Users/davidthompson/miniconda3/lib/python3.6/site-packages/django/core/handlers/base.py”,位于“legacy”get\u响应中
249响应=自我。获取响应(请求)
文件“/Users/davidthompson/miniconda3/lib/python3.6/site-packages/django/core/handlers/base.py”在\u get\u响应中
187response=self.process\u异常\u由\u中间件(e,请求)
文件“/Users/davidthompson/miniconda3/lib/python3.6/site-packages/django/core/handlers/base.py”在\u get\u响应中
185响应=包装的回调(请求,*回调参数,**回调参数)
下载中的文件“/Users/davidthompson/Documents/Web\u Projects/Weather/src/weatherstats/views.py”
37weatherstats\u df=解析url\u df(loc、loc数据、天气属性)
parse\u url\u df中的文件“/Users/davidthompson/Documents/Web\u Projects/Weather/src/weatherstats/data\u parsing.py”
32将_添加到_数据库(weatherstats_df)
文件“/Users/davidthompson/Documents/Web_Projects/Weather/src/weatherstats/pandas_operations.py”,在add_to_db中
62值=值,
保存中的文件“/Users/davidthompson/miniconda3/lib/python3.6/site packages/django/db/models/base.py”
808强制更新=强制更新,更新字段=更新字段)
save_base中的文件“/Users/davidthompson/miniconda3/lib/python3.6/site packages/django/db/models/base.py”
838更新=自我。保存表格(原始、cls、强制插入、强制更新、使用、更新字段)
保存表格中的文件“/Users/davidthompson/miniconda3/lib/python3.6/site packages/django/db/models/base.py”
924结果=self.\u do\u insert(cls.\u base\u manager,using,fields,update\u pk,raw)
插入文件“/Users/davidthompson/miniconda3/lib/python3.6/site packages/django/db/models/base.py”
963使用=使用,原始=原始)
manager_方法中的文件“/Users/davidthompson/miniconda3/lib/python3.6/site packages/django/db/models/manager.py”
85返回getattr(self.get_queryset(),name)(*args,**kwargs)
插入文件“/Users/davidthompson/miniconda3/lib/python3.6/site packages/django/db/models/query.py”
1076return query.get\u编译器(using=using).execute\u sql(return\u id)
execute_sql中的文件“/Users/davidthompson/miniconda3/lib/python3.6/site packages/django/db/models/sql/compiler.py”
1106对于sql,self.as_sql()中的参数为:
as_sql中的文件“/Users/davidthompson/miniconda3/lib/python3.6/site packages/django/db/models/sql/compiler.py”
1059对于self.query.objs中的obj
文件“/Users/davidthompson/miniconda3/lib/python3.6/site packages/django/db/models/sql/compiler.py”
1059对于self.query.objs中的obj
文件“/Users/davidthompson/miniconda3/lib/python3.6/site packages/django/db/models/sql/compiler.py”
1058[self.prepare_值(字段,self.pre_保存值(字段,对象))用于字段中的字段]
prepare_值中的文件“/Users/davidthompson/miniconda3/lib/python3.6/site packages/django/db/models/sql/compiler.py”
998value=field.get\u db\u prep\u save(value,connection=self.connection)
文件“/Users/davidthompson/miniconda3/lib/python3.6/site packages/django/db/models/fields/\uuuuuuuu init\uuuuuuuuu.py”在get\u db\u prep\u save中
770准备就绪(错误)
文件“/Users/davidthompson/miniconda3/lib/python3.6/site packages/django/db/models/fields/\uuuuuuu init\uuuuuuuuu.py”在get\u db\u prep\u值中
762value=self.get\u prep\u值(value)
文件“/Users/davidthompson/miniconda3/lib/python3.6/site packages/django/db/models/fields/\uuuuuu init\uuuuuuuuu.py”在get\u prep\u值中
1781返回浮动(值)
异常类型:ValueError at/weatherstats/wales
异常值:无法将字符串转换为浮点:“1910”

只要用一种更好的方法来净化岁月:

import re
year = int(re.search(r'\d+', row.Year).group())

iKey是否应该初始化为1而不是0?有两个非浮式冷却器


循环前ikey=1,请显示完整的回溯。注:本年度不涉及浮动;你确定是那个字段导致了这个问题吗?是的,它需要一个浮点,这很奇怪,因为我没有告诉它使用浮点!我在错误日志-内部文件“…miniconda3/lib/python3.6/site packages/django/db/models/fields/_init__.py”第1781行的get_prep_value return float(value)ValueError:无法将字符串转换为float:“'1910”[29/Nov/2017 17:45:27]“get/weatherstats/wales HTTP/1”500 175801 Posted full trac