Python pandas форматируют объекты datetime.datetime, которые добавляются в список - PullRequest
0 голосов
/ 13 февраля 2019

В этом случае в качестве имен столбцов указываются страны и даты в первой строке.

enter image description here

Что я пытаюсь сделать, так этопроверьте для каждой страны в списке соответствующий столбец и в каждой строке, где написано «Обработано», вернуть дату из этой строки в столбце даты.То, что я получаю в качестве возврата за одну дату, это:

[datetime.datetime(2017, 2, 1, 0, 0)]

Формат, в котором я нуждаюсь, это 201901, чтобы использовать это затем для создания имен файлов.Вот почему я добавил str (), потому что иначе я не могу создать комбинацию дат и стран в именах файлов.Мое единственное решение пока состоит в том, чтобы раздеть и отформатировать эту строку дальше, но я не думаю, что это лучшее решение.

dates[]   

for country in lst :

    dates.append(str(df.lookup((df.loc[df[country] == 'Worked'].index),['Date'])))

Ответы [ 2 ]

0 голосов
/ 13 февраля 2019
This should work, check it out.

dates = []   

for country in lst :

    dates.append(df[df.Country == country].Date.dt.strftime("%Y%m"))
0 голосов
/ 13 февраля 2019
import pandas as pd
import datetime
df = pd.DataFrame({
    "Date": [
    datetime.datetime(2017,1,1,0,0,0),datetime.datetime(2018,1,1,0,0,0),datetime.datetime(2019,1,1,0,0,0),
        ],
    "Country":["Worked","Uploaded","Worked"],
})
dates = df[df["Country"]=="Worked"]["Date"].dt.strftime("%Y%m").tolist()
dates = [x + '_country.xlsx' for x in dates]

# dates should now look like this:
# ['201701_country.xlsx', '201901_country.xlsx']

Здесь я использовал .dt для доступа к определенным функциям даты и времени, а strftime() преобразует его в желаемый формат даты и времени.

Здесь - полный список%Y введите символы и что они означают

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...