我有几个输入表,如图所示。我想创建一个包含两个输入表中的列的输出表,如图所示。输入表中的列数和列名均无法更改。我想创建一个动态过程,该过程读取输入表并创建具有所有列的输出表。我正在使用python。有人做过吗?任何帮助深表感谢。
答案 0 :(得分:1)
这是可以实现您想要的解决方案。但是,由于我不知道您的数据格式,因此我只能确定它们将如何到达。
如果您使用的是Hive并以csv或excel格式下载数据,则只需将以下代码替换为df1 = pd.read_excel(filepath)
或df1 = pd.read_csv(filepath)
import pandas as pd
df1 = pd.DataFrame({
'Col1': [1,11,22],
'Col2': ['qwe','ert','eryy'],
'Col3': ['111','222','333'],
'Col4': ['match1','fail1','fail2'],
'Col5': ['fail3','fail4','match2'],
})
df2 = pd.DataFrame({
'Col1': [123, 433],
'Col4': ['match1','fail12'],
'Col5': ['fail33','match2'],
'Col6': ['fee','foo'],
'Col7': ['spam','spam'],
})
df3 = pd.merge(df1, df2, how='outer',
left_on=['Col1','Col4','Col5'],
right_on=['Col1','Col4','Col5'])
print (df3)
# Col1 Col2 Col3 Col4 Col5 Col6 Col7
#0 1 qwe 111 match1 fail3 NaN NaN
#1 11 ert 222 fail1 fail4 NaN NaN
#2 22 eryy 333 fail2 match2 NaN NaN
#3 123 NaN NaN match1 fail33 fee spam
#4 433 NaN NaN fail12 match2 foo spam