1

Ich versuche, die Ergebnisse einer Facebook-Anzeigen Insights Abfrage in einen Pandas Datenrahmen zu bekommen, aber das zurückgegebene Objekt kooperiert nicht.Holen Sie sich Facebook Ads Insights Ergebnisse in Pandas Datenrahmen

Ich bin mit einer Grund async Verwendungsbeispiel, wie Facebook hier skizziert: https://developers.facebook.com/docs/marketing-api/insights/v2.6

campaign = Campaign(my_campaign) 
params = { 
    'level': 'ad', 
    'date_preset': 'lifetime', 
    'time_increment': 1, 
    'fields': ['date_start', 'ad_id', 'ad_name', 'spend', 'reach', 'total_actions'] 
} 
async_job = campaign.get_insights(params=params, async=True) 

async_job.remote_read() 

while async_job[AsyncJob.Field.async_percent_completion] < 100: 
    time.sleep(1) 
    async_job.remote_read() 

time.sleep(1) 

result = async_job.get_result() 

Und dann das Ergebnis in eine Liste a la diese Antwort Ich versuche, hier zu ändern: https://stackoverflow.com/a/36397567/5459606

result = [x for x in async_job.get_result()] 
type(result) 

Dies das Ergebnis als Liste zurückgibt, jedoch einen Fehler ich erhalte, wenn ich versuche, dies in Pandas zu lesen df mit = pd.DataFrame (Ergebnis)

, wenn ich sehe, was zurückgegeben wird Ich sehe jeder Listeneintrag wie folgt aussieht:

<AdsInsights> { 
    "ad_id": "6035212284443", 
    "ad_name": "Outlook - Image 2, copy 1", 
    "date_start": "2015-11-21", 
    "date_stop": "2015-11-21", 
    "reach": 625, 
    "spend": 2.4, 
    "total_actions": 10 
} 

Und wenn ich für die Art dieser obejct fragen, dann ist es ein facebookads.adobjects.adsinsights.AdsInsights und kein Wörterbuch, das Ich vermute, ist das Problem. Weiß jemand, wie man das löst und lasse mich Pandas benutzen, um diese Facebook-Ergebnisse zu lesen.

Antwort

0

HaHa, Sie können list() verwenden und dann pandas.DataFrame verwenden. Sie können hier [How to parse nested FB API response from Python SDK

+0

Hey, danke für die Antwort. Ich folgte dem Weg, den Sie in Ihrem Beispiel gemacht haben (result = [x für x in async_job.get_result()]), aber mir wurde ein Fehler gemeldet. KeyError: 'None' –

+0

oh, ich vergesse das du den "async" verwendest. Wenn Sie die Daten erhalten möchten, sollten Sie "async = True" zu "async = False" ändern. Ich helfe diesmal, es kann helfen. –

+0

Hey ich schätze wirklich die Hilfe. Leider funktioniert es aufgrund eines KeyError immer noch nicht: 'None'. Ich denke, das Problem ist, dass, wenn ich den einzelnen Eintrag in der Ergebnisliste mit result [0] .keys() betrachte, ich eine Tonne Schlüssel darin sehen kann (unabhängig von denen, die ich in meinem fields-Parameter auswähle) und eins von dann ist None, nicht als String. Ich sitze nur da, als None, genau in der Mitte, Dinge vermasselnd (glaube ich). –

Verwandte Themen