小编Gre*_*own的帖子

如何将Pandas Dataframe写入现有的Django模型

我试图将Pandas DataFrame中的数据插入到现有的Django模型中Agency,该模型使用SQLite后端.但是,按照如何将一个Pandas Dataframe写入Django模型并将Pandas DataFrame保存到Django模型的答案导致整个SQLite表被替换并打破Django代码.具体来说,Django自动生成的id主键列被替换为index导致模板(no such column: agency.id)时出错.

这是在SQLite表上使用Pandas to_sql的代码和结果agency.

models.py:

class Agency(models.Model):
    name = models.CharField(max_length=128)
Run Code Online (Sandbox Code Playgroud)

myapp/management/commands/populate.py:

class Command(BaseCommand):

def handle(self, *args, **options):

    # Open ModelConnection
    from django.conf import settings
    database_name = settings.DATABASES['default']['NAME']
    database_url = 'sqlite:///{}'.format(database_name)
    engine = create_engine(database_url, echo=False)

    # Insert data data
    agencies = pd.DataFrame({"name": ["Agency 1", "Agency 2", "Agency 3"]})
    agencies.to_sql("agency", con=engine, if_exists="replace")
Run Code Online (Sandbox Code Playgroud)

呼叫' python manage.py populate'成功地将三个机构添加到表中:

index …
Run Code Online (Sandbox Code Playgroud)

python sqlite django pandas

7
推荐指数
2
解决办法
4078
查看次数

从字符指针获取迭代器(C++)

我正在挑战自己只使用 SL 算法、迭代器等编写回文测试器。我还想编写程序以使用原始字符串。下面,我palcopy_if算法中使用了原始指针,但相反,我如何定义一个迭代器来这里,即使用类似begin(pal)and 的东西end(pal + size)

#include <algorithm>
#include <iterator>
#include <cctype>

using namespace std;

bool isPalindrome(const char* pal) {
    if (!pal) { return(false); }

    int size = strlen(pal);
    string pal_raw;
    pal_raw.reserve(size);

    // Copy alphabetical chars only (no spaces, punctuations etc.) into pal_raw
    copy_if(pal, pal+size, back_inserter(pal_raw),
        [](char item) {return isalpha(item); }
    );

    // Test if palindromic, ignoring capitalisation
    bool same = equal(begin(pal_raw), end(pal_raw), rbegin(pal_raw), rend(pal_raw),
        [](char item1, char item2) {return tolower(item1) == …
Run Code Online (Sandbox Code Playgroud)

c++ pointers iterator c++-standard-library stl-algorithm

4
推荐指数
1
解决办法
3936
查看次数

匀称:沿边缘的任意点拆分 LineString

我正在尝试在距其他坐标最近的点处拆分 Shapely LineString。我可以使用 获得线上最近的点projectinterpolate但此时我无法分割线,因为它不是顶点。

我需要沿着边缘分割线,而不是捕捉到最近的顶点,以便最近的点成为线上的新顶点。

这是我到目前为止所做的:

from shapely.ops import split
from shapely.geometry import Point, LineString

line = LineString([(0, 0), (5,8)])
point = Point(2,3)

# Find coordinate of closest point on line to point
d = line.project(point)
p = line.interpolate(d)
print(p)
# >>> POINT (1.910112359550562 3.056179775280899)

# Split the line at the point
result = split(line, p)
print(result)
# >>> GEOMETRYCOLLECTION (LINESTRING (0 0, 5 8))
Run Code Online (Sandbox Code Playgroud)

谢谢!

python shapely geopandas

4
推荐指数
1
解决办法
1639
查看次数