Python Django不断添加';字符到我的数据的第一个单元格,以便它可以';不要把它储存在模型里
我快发疯了。无论我做什么,Django都会在数据的第一个字段的开头添加一个“字符” 我有一个df,看起来是这样的: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
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