如何使用python将DataFrame中的列插入具有可变列数的数据库表的新列中

时间:2019-02-25 08:57:12

标签: python database pandas sqlite

我有一个包含数据的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

我可以在堆栈溢出上找到许多类似的问题,但是似乎没有一个可以解决这个问题,因为在这里,数据库表中的列数在每次运行时都在变化,同样在当前代码方案中,我无法创建临时表并按照以下说明进行移植: Adding an extra column to (big) SQLite database from Pandas dataframe

我的代码:

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

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

1 个答案:

答案 0 :(得分:0)

执行df.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
相关问题