每天更新一个pandas数据帧

时间:2018-03-27 00:24:15

标签: python pandas

这是一个抽象的问题所以请耐心等待。是否可以使用某些数据创建一个pandas数据框,然后每天向其添加新数据?

编辑:下面的脚本接近我要做的事情。我可以解释最终目标的最佳方式是,不是每天创建一个新的lineup_df,而是数据框已经包含过去的数据,而其余的脚本将添加任何新数据。希望这是有道理的。

import requests
import csv
from random import choice
import pandas as pd

url_template = "https://stats.nba.com/stats/leaguedashptstats?College=&Conference=&Country=&DateFrom={date}&DateTo={date}&Division=&DraftPick=&DraftYear=&GameScope=&Height=&LastNGames=0&LeagueID=00&Location=&Month=0&OpponentTeamID=0&Outcome=&PORound=0&PerMode=Totals&PlayerExperience=&PlayerOrTeam=Player&PlayerPosition=&PtMeasureType=SpeedDistance&Season=2017-18&SeasonSegment=&SeasonType=Regular+Season&StarterBench=&TeamID=0&VsConference=&VsDivision=&Weight="

lineup_df = pd.DataFrame()

df = pd.read_csv('NBADates.csv')
df.to_dict('series')

url_list=[url_template.format(date=date) for date in df.loc[ : ,"Date"]]

for index, url in enumerate(url_list):

    data = requests.get(url, headers={
    'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:46.0) Gecko/20100101 Firefox/46.0',})

    headers = data.json()['resultSets'][0]['headers']        
    stats = data.json()['resultSets'][0]['rowSet']

    stats_df = pd.DataFrame(stats, columns=headers)
    stats_df = stats_df.assign(Date2=df.loc[index, "Date2"])

    # Append to the big dataframe
    lineup_df = lineup_df.append(stats_df, ignore_index=True)

lineup_df.to_csv("DailyPlayerStatsHustle.csv") 

1 个答案:

答案 0 :(得分:0)

您可以使用文件,即csv文件(逗号分隔值)来存储数据,并使用pandas表来更新和显示csv文件。虽然,有一个pandas格式文件,但我自己还没有使用它,或者你可以将它存储在二进制格式文件中(更快,更小但更难管理)。如果您计划自动执行此操作,则云会将系统的当前日期与您想要的时间(一天)进行比较,然后使用新数据更新文件,然后更新表格。