Нужна помощь в переборе данных, чтобы получить только дату - PullRequest
0 голосов
/ 19 сентября 2019

У меня есть датафрейм pandas date_win, созданный из запроса sqlite3.Выглядит это так:

             0
0   2011-01-29
1   2011-03-19
2   2011-05-07
3   2011-02-19
4   2011-03-12
5   2011-01-22
6   2011-04-17

Я хотел бы перебрать ее, чтобы получить дату, преобразовать в unix и поместить ее в API Dark Sky.Когда я получаю дату и назначаю ее переменной и помещаю ее в преобразование даты и времени, появляется ошибка:

ValueError: time data '0 2011-01-29 \ nName: 0, dtype: object'не соответствует формату'% Y-% m-% d '

Я пытался использовать это для цикла: for i in range(0,len(date_win)):

И: for i in date_win:

Вот мой полный фрагмент кода:

for i in range(0,len(date_win)):

    s = str(date_win.iloc[i])


    dt = round(time.mktime(datetime.datetime.strptime(s, "%Y-%m-%d").timetuple()))
    dt = str(dt)
    resp = requests.get('https://api.darksky.net/forecast/[my_key]/52.52,13.4050,' + dt)
    data=resp.json()
    print(data['currently']['summary'])

Вот код ошибки:

ValueError: time data '0 2011-01-29 \ nName: 0, dtype: объект 'не соответствует формату'% Y-% m-% d '

Вызов API работает, если я использую s = "2011-01-01" или жесткий код в запросе API.Я просто не делаю итерацию правильно.

1 Ответ

0 голосов
/ 19 сентября 2019

Вы можете вывести столбец форматированных строк даты в список, используя strftime

например,

d = ['2009-08-19',
    '2005-06-04',
    '2003-04-05']
​
df = pd.DataFrame(d, columns=['dates'])
df['dates'] = pd.to_datetime(df['dates'])  

         dates
0   2009-08-19
1   2005-06-04
2   2003-04-05

dates = df['dates'].dt.strftime('%Y-%m-%d').values

Используя .values для серии, dates будет простым списком отформатированных строк на языке Python, после чего вы можете выполнить обычное циклическое повторение и применить их к своему API.

Если вы хотите сохранить строки в кадре данных, вы можете просто назначить другой столбец

df['formatted'] = df['dates'].dt.strftime('%Y-%m-%d')

Стоит отметить, что вы можете использовать itertuples или аналогичный для циклического перемещения по фрейму данных.

...