【问题标题】:Selecting data from multiple dataframes从多个数据框中选择数据
【发布时间】:2019-03-10 20:40:30
【问题描述】:

我的工作簿Rule.xlsx 有以下数据。

工作表1:

 group      ordercode      quantity
     0            A             1
                  B             3
     1            C             1
                  E             2
                  D             1

表 2:

group      ordercode      quantity
     0            x             1
                  y             3
     1            x             1
                  y             2
                  z             1

我已经使用以下方法创建了数据框。

 df1 =data.parse('sheet1')
 df2=data.parse('sheet2')

我想要的结果是使用这两个数据框编写一个序列。

 df3:

group      ordercode      quantity
     0            A             1
                  B             3
     0            x             1
                  y             3
     1            C             1
                  E             2
                  D             1
     1            x             1
                  y             2
                  z             1

一个来自 df1,一个来自 df2。

我想知道如何通过选择组号(例如 group(0)、group(1) 等)来打印数据。

有什么建议吗?

【问题讨论】:

    标签: python-3.x


    【解决方案1】:

    经过一些cmets的解决方法是:

    #create OrderDict of DataFrames
    dfs = pd.read_excel('Rule.xlsx', sheet_name=None)
    #ordering of DataFrames
    order = 'SWC_1380_81,SWC_1382,SWC_1390,SWC_1391,SWM_1380_81'.split(',')
    
    #in loops lookup dictionaries, replace NaNs and create helper column
    L = [dfs[x].ffill().assign(g=i) for i, x in enumerate(order)]
    
    #last join together, sorting and last remove helper column
    df = pd.concat(L).sort_values(['group','g'])
    

    【讨论】:

    • concatenate 结合了两个数据框。但我需要一个规则来写。例如,我需要检查数据框是否为空,当它为空时,我必须选择不同的数据框。
    • hmm,如果使用dfs = [x.ffill() for x in dfs]它不起作用?
    • @i1100362 - 所以group 中的空值不是NaNs 吗?有什么不同吗?
    • 实际上它可以工作,但不是我要求的。我有 dtaframe :df1,df2,df3,df4,df5,现在我想从df2 and df5 写入数据应该以替代方式填写,当df2 or df5 为空时,从df1然后df3 和最后df4 获取值
    • @i1100362 - 那么你认为emty DataFrame 是df2, df5 吗?还是空组?因为如果为空 DataFrame,pd.concat(dfs) 删除空 DataFrames
    猜你喜欢
    • 2020-01-12
    • 1970-01-01
    • 1970-01-01
    • 2014-01-05
    • 2019-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多