从多个数据框中获取int单元的总和

时间:2018-12-02 13:49:57

标签: python pandas dataframe

我有四个具有相同列的数据帧和一个在四个dfs上一致的“区域”列。

AREA     NUM1   NUM2
london   10     10

AREA     NUM1   NUM2
london   5      5

我想在新数据框中看到的输出是

Area     NUM1   NUM2
london   15     15

我一直在尝试做简单的事情

dfTotal = df1 + df2

但是它正在做的事情就是给我伦敦londonlondon

2 个答案:

答案 0 :(得分:0)

dfTotal = ((df1.set_index('AREA').select_dtypes(np.number) + df2.set_index('AREA').select_dtypes(np.number)) .reset_index()) print (dfTotal) AREA NUM1 NUM2 0 london 15 15 列创建索引以在与select_dtypes求和之前对齐:

dfs = [df1, df2]
L = [x.set_index('AREA').select_dtypes(np.number) for x in dfs]

dfTotal = pd.concat(L).sum(level=0).reset_index()
print (dfTotal)
     AREA  NUM1  NUM2
0  london    15    15

一般解决方案:

from io import StringIO

def mkString():
    return StringIO("""CATEG:
        DATA1
        DATA2
        ...
        DATA_N
        CATEG:
        DATA1
        ....""")

mkString().read().splitlines()

答案 1 :(得分:0)

一个选项是合并4个数据帧,然后运行groupby / pivot_table以获取结果。这样做的好处是,当您添加更多数据帧(如果需要)时,代码不会发生太大变化