我有四个具有相同列的数据帧和一个在四个dfs上一致的“区域”列。
AREA NUM1 NUM2
london 10 10
AREA NUM1 NUM2
london 5 5
我想在新数据框中看到的输出是
Area NUM1 NUM2
london 15 15
我一直在尝试做简单的事情
dfTotal = df1 + df2
但是它正在做的事情就是给我伦敦londonlondon
答案 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以获取结果。这样做的好处是,当您添加更多数据帧(如果需要)时,代码不会发生太大变化