python - 如何使用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)。
解决方案
执行 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
推荐阅读
- html - 无法从父组件在子组件中打开表单 - “无法读取属性 xxx”
- java - 可终结对象如何至少需要 2 个垃圾回收周期才能被回收?
- java - Java:无法理解如何从其他类调用实例
- javascript - 窗口对象中是否有 string.find() 的等价物?
- python - 使用 django rest 框架将数据保存到 Postgres DB
- elasticsearch - 在弹性搜索中匹配名称
- java - 如何通过@RestControllerAdvice 处理@Valid MethodArgumentNotValidException
- c++ - 如何在不更改列表的情况下订购数字列表
- algorithm - 最短不常见子序列
- android - Android BroadcastReceiver执行