У меня есть два набора данных, которые я хочу объединить в один кадр данных pandas. Они выглядят примерно так:
df1 = pandas.DataFrame({
'protein': ['A']*4 + ['B']*4,
'repeat':range(1, 9),
'measurement1': [numpy.nan]*4 + list(numpy.random.uniform(0, 1, 4)),
'measurement2': list(numpy.random.uniform(0, 1, 4)) + [numpy.nan]*4,
'measurement3': list(numpy.random.uniform(0, 1, 4)) + [numpy.nan]*4,
})
df2 = pandas.DataFrame({
'protein': ['A']*2 + ['B']*2,
'repeat':range(1, 5),
'measurement1': list(numpy.random.uniform(0, 1, 4)),
'measurement4': list(numpy.random.uniform(0, 1, 4)),
'measurement5': list(numpy.random.uniform(0, 1, 4)),
})
idx = ['protein', 'repeat']
df1.set_index(idx, inplace=True)
df2.set_index(idx, inplace=True)
Первый:
>>> df1
measurement1 measurement2 measurement3
protein repeat
A 1 NaN 0.757366 0.858163
2 NaN 0.453202 0.287777
3 NaN 0.434762 0.044638
4 NaN 0.825710 0.653887
B 5 0.732218 NaN NaN
6 0.380481 NaN NaN
7 0.444811 NaN NaN
8 0.569743 NaN NaN
и второй
>>> df2
measurement1 measurement4 measurement5
protein repeat
A 1 0.342011 0.174242 0.071223
2 0.416247 0.820345 0.048176
B 3 0.240464 0.767659 0.328830
4 0.985637 0.459141 0.089130
Как я могу объединить эти кадры данных, чтобы у меня было что-то вроде этого:
measurement1 measurement2 measurement3 measurement4 measurement5
protein repeat
A 1 0.721179 0.019207 0.189169 0.186984 0.316553
2 0.425959 0.301376 0.677409 0.794600 0.668739
3 0.675156 0.834304 0.022280 0.414653 0.263979
4 0.667983 0.563201 0.841316 0.062459 0.584332
B 5 0.598407 NaN NaN NaN NaN
6 0.658570 NaN NaN NaN NaN
7 0.226620 NaN NaN NaN NaN
8 0.958272 NaN NaN NaN NaN