首页 > 解决方案 > 如何使用python将DataFrame中的列插入具有可变列数的数据库表的新列中

问题描述

我有一个带有数据的 DataFrame:(表 1)

column1   column2(variable)
A            2
B            1
C            3
D            5

每次运行脚本时,DataFrame 值(即 column2 名称和值)都会发生变化。所以让我们考虑下一次运行,数据框中的值是这样的:

column1   column2(variable)
A            7
B            8
C            9
D            7

我想添加新的(更新的 column2 值到数据库表),这样现在数据库表就变成了这样:

column1   column2  column3    
A            2        7
B            1        8
C            3        9
D            5        7

我可以找到许多关于堆栈溢出的类似问题,但似乎没有一个可以解决这个问题,因为这里数据库表中的列数在每次运行时都会发生变化,同样在当前代码场景中,我无法创建临时表并执行按照此处所述进行移植: 从 Pandas 数据框向(大)SQLite 数据库添加一个额外的列

我的代码:

df2 = df.groupby('column1').size().reset_index(name=currentDate)

其中 currentDate 具有今天的日期,因此该表现在有 2 列(column1 和 currentdate)。我想将此数据添加到数据库中已经存在的表 1(上图)中,而不使用新的临时表(请记住,我必须使用带有变量名称的 SQL 查询,即 currentDate)。

标签: pythondatabasepandassqlite

解决方案


执行 adf.iloc[:,-1].name以获取添加的最后一列的名称。
然后您可以通过通常的分配添加该列

根据我对您的问题的理解:假设 df 是您的原始表,并且您正在尝试向其添加与 df2 中最后一列同名的附加列:

df[df2.iloc[:,-1].name] = df2.iloc[:,-1]

这意味着:

#Original df
column1   column2
A            2
B            1
C            3
D            5
#Original df2
column1   NEW_NAME
A            7
B            8
C            9
D            7
#New df
column1   column2  NEW_NAME    
A            2        7
B            1        8
C            3        9
D            5        7

推荐阅读