панды - получайте данные на каждый день - PullRequest
0 голосов
/ 07 декабря 2018

У меня есть DataFrame с датами в индексе.Я делаю Подмножество DataFrame для каждого Дня.Есть ли способ написать функцию или цикл для автоматической генерации этих шагов?

import json
import requests
import pandas as pd
from pandas.io.json import json_normalize
import datetime as dt

#Get the channel feeds from Thinkspeak
response = requests.get("https://api.thingspeak.com/channels/518038/feeds.json?api_key=XXXXXX&results=500")

#Convert Json object to Python object
response_data = response.json()
channel_head = response_data["channel"]
channel_bottom = response_data["feeds"]

#Create DataFrame with Pandas
df = pd.DataFrame(channel_bottom)

#rename Parameters
df = df.rename(columns={"field1":"PM 2.5","field2":"PM 10"})

#Drop all entrys with at least on nan
df = df.dropna(how="any")

#Convert time to datetime object
df["created_at"] = df["created_at"].apply(lambda x:dt.datetime.strptime(x,"%Y-%m-%dT%H:%M:%SZ"))

#Set dates as Index
df = df.set_index(keys="created_at")

#Make a DataFrame for every day
df_2018_12_07 = df.loc['2018-12-07']
df_2018_12_06 = df.loc['2018-12-06']
df_2018_12_05 = df.loc['2018-12-05']
df_2018_12_04 = df.loc['2018-12-04']
df_2018_12_03 = df.loc['2018-12-03']
df_2018_12_02 = df.loc['2018-12-02']

Ответы [ 3 ]

0 голосов
/ 07 декабря 2018

Вы можете создать dictionary of DataFrames - затем выбрать key s для DataFrame:

dfs = dict(tuple(df.groupby(df.index.strftime('%Y-%m-%d'))))

print (dfs['2018-12-07'])
0 голосов
/ 07 декабря 2018

Предположим, что вы делаете это в первый день следующей недели (поэтому, экспортируя понедельник в воскресенье в следующий понедельник, вы можете сделать это следующим образом:

from datetime import date, timedelta
day = date.today() - timedelta(days=7)   # so, if today is monday, we start monday before
df = df.loc[today]
while day < today:
    df1 = df.loc[str(day)]
    df1.to_csv('mypath'+str(day)+'.csv')  #so that export files have different names 
    day = day+ timedelta(days=1)
0 голосов
/ 07 декабря 2018

вы можете использовать:

from datetime import date
today = str(date.today())
df = df.loc[today]

и планировать сценарий, используя любой планировщик, например crontab.

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