如何使用其他两个数据帧中的行创建数据帧?

时间:2018-11-17 13:08:40

标签: python pandas dataframe

我正在尝试将数据帧拼接在一起。我有一个列表,其中包含在两个数据框之间匹配的数据的行。

因此,假设数据框架1中的第300行与数据框架2中的第2行是同一家公司。目前,我正在使用两个原始数据框架创建一个新的数据框架,但它没有以正确的方式添加它们。

df_final = pd.DataFrame( df1.iloc[300], df2.iloc[2]])

这样做,我从两个数据帧中得到了两行数据,而我真正想要的是一行,其中两个数据都被水平添加了。因此,如果每个数据框有5列,我希望有10列。

import pandas as pd

position_list = [(0, 85, 83),
 (1, 134, 67),
 (2, 78, 50),
 (3, 89, 83),
 (4, 90, 83),
 (5, 91, 83)]

ammended_results= Name of Applicant CMU ID  CMU Name    Capacity Awarded    Classification  Capacity (MW)   Duration (Years)    Clearing price (£)  Yearly CMU Funding (£)  Contract Length Funding (£) New Generation  Existing Generation New Capacity    Existing Capacity
1   SSE Generation Ltd. BURGH1  Burghfield  Yes Existing Generating CMU 44.034  1.0 19.4    854259.6    854259.6    0   1   0.000   44.034
2   SSE Generation Ltd. CBEU01  Deanie 1    Yes Existing Generating CMU 15.886  1.0 19.4    308188.4    308188.4    0   1   0.000   15.886
3   SSE Generation Ltd. CBEU02  Deanie 2    Yes Existing Generating CMU 15.886  1.0 19.4    308188.4    308188.4    0   1   0.000   15.886
...

ammended_register = Unique CMU Identifier   Type    Delivery Year   Name of Applicant         CM Unit Name                                            
...                           
        BURG18              T-4          2018    SSEPG (Operations) Limited  Burghfield  

...

基本上,我想从结果数据框中找到第一个条目,并在寄存器数据框中找到第85个条目。并使用所有这些信息创建一个新的数据框。

目前我正在使用此

df_list=[]
for i in range(len(position_list)):
    result = position_list[i][1]
    df_final = pd.concat(ammended_results.iloc[i], ammended_register.iloc[results]])
    df.reset_index(inplace=True, drop=True)
    df_list.append(df)

fr = pd.concat(df_list,axis = 0)

但是我得到的最终数据框没有以正确的方式添加它们

1 个答案:

答案 0 :(得分:2)

轻松榨干柠檬

pd.concat([ df1.iloc[300], df2.iloc[2]], axis = 1)