将Facebook广告洞察结果导入pandas数据框架

4
我正在尝试将Facebook广告洞察查询的结果放入pandas数据框中,但返回的对象不合作。
我按照Facebook在这里概述的基本异步使用示例运行: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()

然后我尝试将结果转换为列表,就像这个回答一样:https://dev59.com/ppHea4cB1Zd3GeqPtLxx#36397567

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

这将返回一个列表作为结果,但是当我尝试使用df = pd.DataFrame(result)将其读入pandas时,我遇到了错误。

如果我查看返回的内容,我会看到每个列表条目都像这样:

<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
}

如果我要求这个对象的类型,它是一个facebookads.adobjects.adsinsights.AdsInsights而不是一个字典,我想这可能是问题所在。有人知道如何解决这个问题并让我使用pandas读取这些Facebook结果吗?

1个回答

1

1
嘿,谢谢回复。我按照你在示例中的方法进行了操作(result = [x for x in async_job.get_result()]),但是出现了错误。KeyError: 'None' - Sam Taylor
1
哦,我忘记你使用了“async”。如果你想要获取数据,你应该将“async=True”改为“async=False”。希望这次能帮到你。 - ye jiawei
嘿,非常感谢您的帮助。不幸的是,由于KeyError:'None',它仍然无法正常工作。我认为问题在于当我使用result [0] .keys()查看结果列表中的单个条目时,我可以看到其中有很多键(无论我在字段参数中选择哪些),其中之一是None,而不是字符串。就在那里,作为None,坐落在中间,搞砸了事情(我想)。 - Sam Taylor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接