вывод даты в pandas
в табличке excel есть столбец с датами. При выводе
df = pd.read_excel("test.xlsx")
n = datetime.date.today()
r = datetime.timedelta(days=3)
p1 = df[df.data > f'{n - r}']
p2 = p1[p1.data <= f'{n}'][['data','summ','name']]
print(p2.to_markdown())
в результате я получаю вот так (кусок таблицы)
| 89 | 2022-09-29 00:00:00 | 222 | Илья |
| 90 | 2022-09-29 00:00:00 | 3342 | Илья |
| 91 | 2022-09-29 00:00:00 | 32342 | Илья |
как сделать что бы столбец даты был без времени?
updt
Спасибо всем откликнувшимся. Пробовал и ваши варианты и чего только не пробовал, а причина оказывается вообще не в этом. Для вывода я использовал .to_markdown() и именно эта шляпа добавляет не только оформление, но и время зачем то. Если есть информация как это убрать, буду признателен. Если сам найду, обязательно допишу
updt2
df.astype(str).to_markdown() - убрало врмя
Ответы (2 шт):
Автор решения: Алексей Р
→ Ссылка
Можно использовать Series.dt.floor() - см. пример
# генерируем данные
df = pd.DataFrame({'Date1': pd.date_range('2022-09-10', '2022-10-10', freq='3H')})
df['summ'] = range(df.size)
df['name'] = 'Илья'
# маска для дат между СЕГОДНЯ и СЕГОДНЯ+3 дня
mask = df.Date1.between(pd.Timestamp.today().floor('D'), pd.Timestamp.today() + pd.DateOffset(3), inclusive='both')
df = df[mask] # отбираем строки по маске
df['Date2'] = df.Date1.dt.floor('D') # сделал новый столбец для наглядности, можно перезаписать в Date1
print(df)
Date1 summ name Date2
152 2022-09-29 00:00:00 152 Илья 2022-09-29
153 2022-09-29 03:00:00 153 Илья 2022-09-29
154 2022-09-29 06:00:00 154 Илья 2022-09-29
155 2022-09-29 09:00:00 155 Илья 2022-09-29
156 2022-09-29 12:00:00 156 Илья 2022-09-29
157 2022-09-29 15:00:00 157 Илья 2022-09-29
158 2022-09-29 18:00:00 158 Илья 2022-09-29
...
179 2022-10-02 09:00:00 179 Илья 2022-10-02
180 2022-10-02 12:00:00 180 Илья 2022-10-02
181 2022-10-02 15:00:00 181 Илья 2022-10-02
182 2022-10-02 18:00:00 182 Илья 2022-10-02
183 2022-10-02 21:00:00 183 Илья 2022-10-02
Автор решения: strawdog
→ Ссылка
воспользуйтесь методом date:
import pandas as pd
df = pd.DataFrame()
df["DateTime"] = pd.date_range(start="2022-09-29", end="2022-10-29", periods=10)
df["Date"] = df["DateTime"].dt.date # <<<
df:
DateTime Date
0 2022-09-29 00:00:00 2022-09-29
1 2022-10-02 08:00:00 2022-10-02
2 2022-10-05 16:00:00 2022-10-05
3 2022-10-09 00:00:00 2022-10-09
4 2022-10-12 08:00:00 2022-10-12
5 2022-10-15 16:00:00 2022-10-15
6 2022-10-19 00:00:00 2022-10-19
7 2022-10-22 08:00:00 2022-10-22
8 2022-10-25 16:00:00 2022-10-25
9 2022-10-29 00:00:00 2022-10-29