#python #pandas #string #dataframe #copy
#python #pandas #строка #фрейм данных #Копировать
Вопрос:
У меня есть фрейм данных (df), в котором есть столбец «Дата создания».
Мне нужно соединить строку внутри ‘Дата создания’, чтобы у меня остался только числовой день вместо всей строки даты и времени (например, я хочу сократить ‘Sun Mar 03 2020 11:52 pm’ до «2020/03 /» ‘строка в дате создания’ [8:10] (9-й и 10-й символы).
Я пробовал это, но получаю предупреждение о копировании:
for x in range(len(df)):
df.iloc[x]['date'] = "202003" (df.iloc[x]['Date Created'])[8:10]
Я перехожу к документации, и там есть инструкции о том, как использовать loc для получения подстрок, но они делают это для очень конкретного примера, который не применяется к моему коду.
Тогда я попробовал это:
df['date'] = ''
df.loc[:,['Date Created']] = "202003" (df.loc[:,['Date Created']])[8:10]
Но это также не работает. Может кто-нибудь, пожалуйста, помочь в том, как я могу получить 9-й и 10-й символы каждой строки созданной даты и присвоить их новому столбцу (или даже заменить существующее значение в созданной дате)? ТИА!
Ответ №1:
Я создал этот фрейм данных.
df = pd.DataFrame({"Date Created": ["Sun Mar 03 2020 11:52 pm",
"Sun Mar 08 2020 11:52 pm",
"Sun Mar 09 2020 11:52 pm"]})
Итак, с
df.loc[:, "Date Created"] = "202003" df["Date Created"].str[8:10]
Вы получите это
Ответ №2:
Альтернативным подходом будет доступ day
к полю datetime
объекта:
import pandas as pd
df = pd.DataFrame({"Date Created": [
"Sun Mar 01 2020 11:52 pm",
"Sun Mar 08 2020 11:52 pm",
"Sun Mar 15 2020 11:52 pm"
]})
df
Вывод:
Date Created
0 Sun Mar 01 2020 11:52 pm
1 Sun Mar 08 2020 11:52 pm
2 Sun Mar 15 2020 11:52 pm
.
df['year'] = pd.DatetimeIndex(df['Date Created']).year
df['month'] = pd.DatetimeIndex(df['Date Created']).month
df['day'] = pd.DatetimeIndex(df['Date Created']).day
df['formatted'] = pd.DatetimeIndex(df['Date Created']).strftime('%Y/%m/%d')
df
Вывод:
Date Created year month day formatted
0 Sun Mar 01 2020 11:52 pm 2020 3 1 2020/03/01
1 Sun Mar 08 2020 11:52 pm 2020 3 8 2020/03/08
2 Sun Mar 15 2020 11:52 pm 2020 3 15 2020/03/15