Это может считаться дубликатом подробного объяснения различных подходов , однако я не могу найти решение своей проблемы из-за большего числа фреймов данных.
У меня есть несколько фреймов данных (более 10), каждый из которых отличается в одном столбце VARX
.Это простой и упрощенный пример:
import pandas as pd
df1 = pd.DataFrame({'depth': [0.500000, 0.600000, 1.300000],
'VAR1': [38.196202, 38.198002, 38.200001],
'profile': ['profile_1', 'profile_1','profile_1']})
df2 = pd.DataFrame({'depth': [0.600000, 1.100000, 1.200000],
'VAR2': [0.20440, 0.20442, 0.20446],
'profile': ['profile_1', 'profile_1','profile_1']})
df3 = pd.DataFrame({'depth': [1.200000, 1.300000, 1.400000],
'VAR3': [15.1880, 15.1820, 15.1820],
'profile': ['profile_1', 'profile_1','profile_1']})
Каждый df
имеет одинаковую или разную глубину для одинаковых профилей, поэтому
Мне нужно создать новый DataFrame, который объединит всеотдельные, где ключевые столбцы для операции: depth
и profile
, с all значениями глубины для каждого профиля.
VARX
поэтому значение должно быть NaN
, если нет измерения глубины этой переменной для этого профиля.
Таким образом, результатом должен быть новый сжатый DataFrame со всеми VARX
в качестве дополнительных столбцов к depth
и profile
, что-то вроде этого:
name_profile depth VAR1 VAR2 VAR3
profile_1 0.500000 38.196202 NaN NaN
profile_1 0.600000 38.198002 0.20440 NaN
profile_1 1.100000 NaN 0.20442 NaN
profile_1 1.200000 NaN 0.20446 15.1880
profile_1 1.300000 38.200001 NaN 15.1820
profile_1 1.400000 NaN NaN 15.1820
Обратите внимание, что фактическое количество профилей намного, намного больше.
Есть идеи?