我有两个df:
df_1 = pd.DataFrame([[5,6]], columns=['Jan15','Feb15'])
Jan15 Feb15
0 5 6
df_2 = pd.DataFrame([8,3]], columns=['Jan16','Feb16'])
Jan16 Feb16
0 8 3
有没有一种方法可以将两个帧相加以便得出:
sum = Index, Jan, Feb
0 13 9
答案 0 :(得分:3)
在列标题上需要concat
,然后需要groupby
。
pd.concat([df_1, df_2], axis=1).groupby(by=lambda x: x[:3], axis=1).sum()
Feb Jan
0 9 13
这是在您的列名都采用MTHxx
格式的前提下进行的。
答案 1 :(得分:2)
使用add()
:
df_1.add(df_2)
Index Jan15 Feb15
0 0 13 9
具有不同的列名:
pd.DataFrame(df_1.values + df_2.values,
columns = df_1.columns.str.replace("\d", "")).reset_index()
答案 2 :(得分:1)
这是一种愚蠢的做法,@ coldspeed的答案和@andrew_reece的答案是最好的:
new1 = df_1[:]
new1.columns = [i[:-2] for i in df_1.columns]
new2 = df_2[:]
new2.columns = [i[:-2] for i in df_2.columns]
final_df = new1+new2
indexes = list(new1.index)+list(new1.index)
final_df['Index'] = list(set(indexes))
print(final_df)
输出:
Jan Feb Index
0 13 9 0