import pandas as pd
df1 = pd.DataFrame({'Col1': [1, 2], 'Col2': [3, 4]}, index=['1/1', '2/1'])
df2 = pd.DataFrame({'A': [90, 0, 73, 0, 0], 'B': [0, 75, 0, 0, 0], 'C': [0, 0, 0, 85, 75]}, index=['1/1', '1/1', '1/1', '2/1', '2/1'])
Фреймы данных df1
и df2
такие же, как в вашем посте.Чтобы «соединить» кадры данных так, как вы хотите, вы можете сделать:
df = pd.concat([df1, df2.groupby(level=0).sum()], axis=1)
Здесь df
равно:
Col1 Col2 A B C
1/1 1 3 163 75 0
2/1 2 4 0 0 160
Обратите внимание, что это также работает, если индексдва кадра данных df1
и df2
не выровнены.С:
df3 = pd.DataFrame({'Col1': [1, 2, 3], 'Col2': [3, 4, 5]}, index=['1/1', '2/1', '4/1'])
df4 = pd.DataFrame({'A': [90, 0, 73, 0, 0, 20], 'B': [0, 75, 0, 0, 0, 0], 'C': [0, 0, 0, 85, 75, 0]}, index=['1/1', '1/1', '2/1', '3/1', '4/1', '4/1'])
и снова:
df = pd.concat([df1, df2.groupby(level=0).sum()], axis=1, sort=True)
задается как:
Col1 Col2 A B C
1/1 1.0 3.0 90 75 0
2/1 2.0 4.0 73 0 0
3/1 NaN NaN 0 0 85
4/1 3.0 5.0 20 0 75