比较数据帧的标头并将列添加到delta表中



有两个数据帧

df1->OrgID, location, Address, State——它是增量表

df2->OrgID, location, Address, State, Active, Seq_Number——即createOrReplaceTempViewtable

df2中有两个附加列ActiveSeq_Number

  1. 如何获取新列的数据类型
  2. 如何将新列添加到现有的增量表中并更新值

尝试了以下操作:

将数据帧转换为pandaDF并使用它,从而在Index对象中获得新列。

df_new_columns = df1.columns.difference(df2.columns)
new = [ ]
if len(df_new_columns.tolist()) != 0:
for column in df_new_columns.tolist():
column_name = column
new.append(column)

试试这个:

delta_table = pd.concat([delta_table, createOrReplaceTempViewtable[['Active', 'Seq_Number']]])

如果在连接原始表中缺失的表时不想命名任何重复的表,可以执行以下操作:

import pandas as pd
a = [{'A': 3, 'B': 5, 'C': 3, 'D': 2},{'A': 2,  'B': 4, 'C': 3, 'D': 9}]
df1 = pd.DataFrame(a)
b = [{'F': 0,  'M': 4,  'B': 2,  'C': 8 },{'F': 2,  'M': 4, 'B': 3, 'C': 9}]
df2 = pd.DataFrame(b)
df_delta = df2.columns.difference(df1.columns)
print(pd.concat([df1,df2]).T.drop_duplicates().T)

它给出:

A    B    C    D    F    M
0  3.0  5.0  3.0  2.0  NaN  NaN
1  2.0  4.0  3.0  9.0  NaN  NaN
0  NaN  2.0  8.0  NaN  0.0  4.0
1  NaN  3.0  9.0  NaN  2.0  4.0

Index(['F', 'M'], dtype='object')

最新更新