#python #pandas
#python #pandas
Вопрос:
У меня есть два фрейма данных pandas, как показано ниже :-
DF1
date1 hours value Field count1
1 2021-01-15 9 eps EPS 770915
2 2021-01-22 9 eps EPS 797503
DF2
date1 hours value Field count1
0 2021-01-09 9 eps EPS 0
1 2021-01-10 9 eps EPS 0
2 2021-01-11 9 eps EPS 0
3 2021-01-12 9 eps EPS 0
4 2021-01-13 9 eps EPS 0
5 2021-01-14 9 eps EPS 0
6 2021-01-15 9 eps EPS 0
7 2021-01-16 9 eps EPS 0
8 2021-01-17 9 eps EPS 0
9 2021-01-18 9 eps EPS 0
10 2021-01-19 9 eps EPS 0
11 2021-01-20 9 eps EPS 0
12 2021-01-21 9 eps EPS 0
13 2021-01-22 9 eps EPS 0
Я хочу вывод, как показано ниже :-
Результат :-
date1 hours value Field count1
0 2021-01-09 9 eps EPS 0
1 2021-01-10 9 eps EPS 0
2 2021-01-11 9 eps EPS 0
3 2021-01-12 9 eps EPS 0
4 2021-01-13 9 eps EPS 0
5 2021-01-14 9 eps EPS 0
6 2021-01-15 9 eps EPS 770915
7 2021-01-16 9 eps EPS 0
8 2021-01-17 9 eps EPS 0
9 2021-01-18 9 eps EPS 0
10 2021-01-19 9 eps EPS 0
11 2021-01-20 9 eps EPS 0
12 2021-01-21 9 eps EPS 0
13 2021-01-22 9 eps EPS 797503
типы данных столбцов DF1 и DF2 похожи :-
date1 object
hours int64
value object
Field object
count1 int64
DF2 всегда содержит 14 дней, а DF1 содержит переменные дни, которые находятся в диапазоне от 1 до 14. Я хочу, чтобы результирующий фрейм данных содержал поле отсутствующих дней с нулем из 2-го фрейма данных.
Ответ №1:
Использовать concat
с DataFrame.drop_duplicates
:
df = (pd.concat([DF1, DF2], ignore_index=True)
.drop_duplicates(['date1','hours','value','Field']))
При необходимости сортировка вывода:
df = (pd.concat([DF1, DF2], ignore_index=True)
.drop_duplicates(['date1','hours','value','Field'])
.sorT_values(['date1','hours','value','Field']))
Комментарии:
1. Спасибо за ответ @jezrael. Я попробовал ваш метод, но он не работает. Он возвращает дублирующие значения из обоих фреймов.
2. @vishwajeetMane — Проблема должна заключаться в том, какие столбцы проверяются на наличие дубликатов? Возможно, нужно
.drop_duplicates(['date1']))
только.3. @vishwajeetMane — Протестировано с образцами данных и работает отлично, поэтому в реальных данных есть некоторая разница.