Мне нужно объединить группу данных:
df1 = pd.DataFrame({'Lic1': [0,5,7]}, index=['07:00', '08:00', '09:00'])
df2 = pd.DataFrame({'Lic1': [4,2,1]}, index=['10:00', '11:00', '12:00'])
df3 = pd.DataFrame({'Lic2': [1,1,4]}, index=['07:00', '08:00', '10:00'])
, чтобы получить следующий результат:
Lic1 Lic2
07:00 0.0 1.0
08:00 5.0 1.0
09:00 7.0 NaN
10:00 4.0 4.0
11:00 2.0 NaN
12:00 1.0 NaN
Когда я использую concat, я получаю правильные столбцы, но повторяющийся индекс (07:00,08:00 и 10:00 из-за нового имени столбца):
df = pd.concat([df1, df2, df3], sort=True, axis=0)
Output:
Lic1 Lic2
07:00 0.0 NaN
08:00 5.0 NaN
09:00 7.0 NaN
10:00 4.0 NaN
11:00 2.0 NaN
12:00 1.0 NaN
07:00 NaN 1.0
08:00 NaN 1.0
10:00 NaN 4.0
, а затем мне нужно объединить дублирующиеся индексы, чтобы сохранить максимальные значения и удалить дублирующиеся строки, например:
for index in df.index:
for column in df.columns:
df.loc[index,column] = df.loc[index, column].max()
df.drop_duplicates(inplace=True)
, который дает мне запрошенный вывод.
Есть ли какой-нибудь более простой (== более жуткий) способ, как это сделать за один шаг?Я попытался сделать это в один шаг с concat , merge или join , но, вероятно, что-то пропустил.Я всегда получаю либо дубликаты в индексе (как выше), либо дубликаты столбцов (например, двойной Lic1 с concat или Lic1_x и Lic1_y с слияние ).