我想每隔n分鐘查詢API並將響應解析爲數據幀。如何將Timer用於返回數據幀的函數?
TypeError: 'DataFrame' object is not callable
我曾嘗試:
- 運行,返回一個GET請求
- 功能運行,返回上面的函數但是,試圖這樣做時,我得到一個類型錯誤到熊貓數據幀
在#1中,我得到「'dict'對象不可調用」。
在#2中,我得到「'DataFrame not callable'」錯誤(如上所示)。
這兩個工作正常,如果我反而打印功能的結果但是我需要對結果進行計算,因此需要返回數據幀響應。
這似乎是我失去了一些明顯的東西。任何人都可以請澄清?
參考:
from threading import Timer, Thread
def run_alert(time):
t = Timer(time, print_query_results(*args))
t.start()
EDIT#1:
數據幀對象是從格式化成10x3表API響應:
import numpy as np
import pandas as pd
from pandas.io.json import json_normalize
medium source pageviews
0 DIRECT (not set) xxx
1 ORGANIC google xxx
2 ORGANIC yahoo xxx
4 ORGANIC bing xxx
* * * *
EDIT#2:
def print_query_results(ids, metrics, dimensions, filters, sort):
#get results from request
results = run_query(ids, metrics, dimensions, filters, sort)
#convert json into dataframe
cols = json_normalize(results['columnHeaders'])['name']
rows = json_normalize(results, 'rows')
cols_names = []
for name in cols:
cols_names.append(name.split(":")[1])
df = pd.DataFrame(rows)
df.columns = [cols_names]
df.rename(columns = {'pageviews':'pageviews'+" "+strftime('%I:%M %p')}, inplace=True)
df = df.convert_objects(convert_numeric=True)
return df
你能分享關於'DataFrame'對象的更多細節嗎? – kmad1729
計時器試圖調用'print_query_results(* args)',它在計算時不是函數 - 它是'print_query_results'中的'return'語句。將它傳遞給'lambda:print_query_results(* args)'也許吧? –
我已添加進口和示例df輸出 –