#python #pandas
#питон #панды
Вопрос:
Я пытаюсь прочитать и объединить кучу отчетов Excel (с помощью forloop) вместе в один конечный кадр данных. Каждый файл предназначен для другого месяца и содержит дату, номер предложения и количество предложений (для столбцов XYZ). Однако я нахожу, что номера котировок дублируются в файлах Excel с одной и той же датой, но разными значениями котировок.
Например, ниже у меня есть два кадра данных (или отчеты excel за сентябрь и октябрь). Я хочу объединить их вместе, но сохранить только номер цитаты «111» из отчета «Октябрь», как более поздний, и содержать дополнительную цитату для столбца «X».
Предполагая, что у меня есть отчеты Excel с именем месяца / года, есть ли простой способ сделать это? Я думаю, что логика в основном читается в каждом файле и добавляется в основной фрейм данных. Если файл содержит номер предложения и дату, такие же, как в главном файле, замените существующие значения «XYZ» для этого номера предложения значениями XYZ в более новом файле для номера предложения. Надеюсь, все это имеет смысл. Я думал, что мог бы запустить еще один внутренний forloop, но я уверен, что должен быть лучший / более эффективный способ сделать это. Большое спасибо!!
df_september = pd.DataFrame({'Quote number': [111, 222, 333], "Quote Date": ['2021-09-08', '2021-09-08', '2021-09-08'], 'X': [2, 1, 3], 'Y': [2, 2, 0], 'Z': [4, 2, 5]}) df_october = pd.DataFrame({'Quote number': [111, 444, 555], "Quote Date": ['2021-09-08', '2021-09-11', '2021-09-11'], 'X': [3, 5, 5], 'Y': [2, 2, 0], 'Z': [4, 2, 5]})
Комментарии:
1. вам, наверное, нужно
combine_first
. Пожалуйста, добавьте ожидаемый выходной кадр данных2. Мне нравится идея мастера df, с которым вы согласны. Если вы читаете в месяцах в обратном хронологическом порядке (т. Е. в октябре, затем в сентябре), вы можете игнорировать все цитаты в новом месяце, которые уже присутствуют в главном
Ответ №1:
df_september.append(df_october).drop_duplicates('Quote number', keep='last')