大熊猫在一个循环中合并dataframes

问题描述:

我创建了一个循环读取SQLite数据库为大熊猫数据帧,而我试图把它们合并起来基于"Code"大熊猫在一个循环中合并dataframes

... 
df = pandas.Dataframe() # Creating an empty dataframe for merging at the end 

items = ["tb1", "tb2", "tb3"] 

for each_item in items: 
    my_value = pandas.read_sql_query('select "Code", "Name", "Value" from {tb_name} where "Value" is not null' 
            .format(tbl_name='"%s"' % each_item), con=engine) 

    print(my_value) 

    # This below code is my attempt to merge the dataframes that was obtained through the for loop 
    merge_value = pandas.merge(my_value, df, on='Code', how='outer') 

MY_VALUE结果:

# tb1 results 
    Code   Name  Value 
0  C01   Name1 0.010000 
1  C02   Name2 0.001200 
2  C03   Name3 0.000300 
3  C04   Name4 0.001700 

# tb2 results 
    Code   Name  Value 
0  C03   Name3 0.010000 
1  C04   Name4 0.001200 
2  C05   Name5 0.000300 
3  C06   Name6 0.001700 

# tb3 results 
    Code   Name  Value 
0  C01   Name1 0.010000 
1  C02   Name2 0.001200 
2  C05   Name5 0.000300 
3  C06   Name6 0.001700 

我试图将它们合并为如下的一个表格:

# desired results 
    Code   Name Value_x Value_y Value_Z 
0  C01   Name1 0.010000  NULL 0.010000  
1  C02   Name2 0.001200  NULL 0.001200  
2  C03   Name3 0.000300 0.010000  NULL 
3  C04   Name4 0.001700 0.001200  NULL  
4  C05   Name5  NULL 0.000300 0.000300 
5  C06   Name6  NULL 0.001700 0.001700 

如何合并它?我试过下面,但它产生的key error: Code

merge_value = pandas.merge(my_value, df, on='Code', how='outer') 

可以使用DataFrame.merge代替pandas.merge

https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.merge.html


与列创建一个空的数据帧,以防止“关键错误:代码“

df = pd.DataFrame(columns=['Code']) 

then在循环,MY_VALUE创建

+0

你好

df.merge(my_value, on='Code', how='outer') 

后您的问题是,'TB1,TB2,tb3'通过'for'环获得。所以我不能明确地输入你提出的解决方案。 –

+0

尝试使用列df = pd.DataFrame(columns = ['Code'])创建一个空的DataFrame,然后在循环中,my_value之后的df.merge(my_value,on ='Code',how ='outer'创建 – jeffreyrampineda