Я начал заниматься питоном.Я пытался очистить данные.Мой фрейм данных pyspark содержит Count и Date.Я хочу добавить отсутствующие даты в качестве новых строк, а количество пропущенных дат должно быть равно нулю.
Я пытался использовать эту технику Заполнение пробелов во временных рядах Spark
В этом методе используются временные метки и заполняются пробелы в минутах путем преобразования их в длинный тип данных.У меня только даты нет отметок времени.
Ниже приведен код, в котором я пытался получить минимальное и максимальное значения из фрейма данных.
Теперь я изо всех сил пытаюсь создать диапазон дат только с пропущенными датами и поместить его в новый фрейм данных.Затем объедините новый фрейм данных с оригинальным.
from pyspark.sql.functions import col, min as min_, max as max_
minp, maxp = existing_rules_search.select(
min_("rule_date_cst").cast("date"), max_("rule_date_cst").cast("date")
).first()
Это то, что у меня есть в моем фрейме данных:
Col1 Col2 Col3 Count rule_date_cst
12121 Apple Apple Pie 1 3/28/2019
12121 Apple Apple Pie 1 3/29/2019
12121 Apple Apple Pie 1 4/4/2019
Ниже приведено то, что я ожидаю, что результаты появятся ..
Col1 Col2 Col3 Count rule_date_cst
12121 Apple Apple Pie 1 3/28/2019
12121 Apple Apple Pie 1 3/29/2019
12121 Apple Apple Pie 0 3/30/2019
12121 Apple Apple Pie 0 3/31/2019
12121 Apple Apple Pie 0 4/1/2019
12121 Apple Apple Pie 0 4/2/2019
12121 Apple Apple Pie 0 4/3/2019
12121 Apple Apple Pie 1 4/4/2019
Нижеэто скриншот, который показывает вывод диапазона дат ..
Я попробовал другой метод с использованием панд .. вот моя попытка.но это не сработало ..
min_date = min(existing_rules_search_search22['rule_date_cst'])
max_date = pd.datetime.today().date()
r = pd.date_range(start=existing_rules_search_search22.rule_date_cst.min(), end=existing_rules_search_search22.rule_date_cst.max())
existing_rules_search_search22.set_index('rule_date_cst').reindex(r).fillna(0.0).rename_axis('rule_date_cst').reset_index()