当前位置: 首页 > 知识库问答 >
问题:

通过请求将数据发布到Google Analytics

潘高岑
2023-03-14

我正在尝试将数据发布到 GA 中,但我收到索引错误 连接正在工作,因为我得到响应 200,但 for 循环似乎有问题,它从我的数据帧中发布所有行。有人可以帮助我吗?谢谢!

endpoint = 'http://www.google-analytics.com/collect'

payload1 = {
                   'v'     : "1",
                   't'     : "event",
                   'pa'    : "purchase",
                   'tid'   : "xxx",
                   'cid'   : df.iloc[i,0],
                   'ti'    : df.iloc[i,6],
                   'ec'    : "ecommerce",
                   'ea'    : "transaction",
                   'ta'    : "aaaa",
                   'tr'    : df.iloc[i,17],
                   'cd1'   : df.iloc[i,0],
                   'cd2'   : df.iloc[i,6],

                   'cu'    : "bbb",
                   "pr1id" : "ccc",
                   'pr1nm' : "ddd",
                   'pr1pr' : df.iloc[i,17],
                   'pr1qt' : 1,
                   'cs'    : "offline"

                      }





for i in df.iterrows():

    r = requests.post(url = endpoint ,

                      data  = payload1,


                      headers={'User-Agent': 'User 1.0'})
    time.sleep(0.1) 
    print(r)

错误:

IndexingError Traceback(最近的调用最后)在4'pa':"购买",5'tid':"xxx", ----

~\路径\lib\site-packages\pandas\core\indexing.py 在 getitem(self, key) 1416 中,除了 (键错误, 索引错误, 属性错误): 1417 pass -

~\路径\lib\site-packages\熊猫\核心\indexing.py _getitem_tuple(自我, tup) 2090 def _getitem_tuple(自我, tup): 2091 -

~ \ path \ lib \ site-packages \ pandas \ core \ indexing . py in _ has _ valid _ tuple(self,key) 233 raise IndexingError("索引器太多")234 try: -

~\路径\lib\站点包\熊猫\核心\indexing.py在_validate_key(自我,键,轴)2016#元组应该已经被捕获到这一点2017#所以不要将元组视为有效的索引器-

IndexingError:索引器太多

共有1个答案

戚阳曜
2023-03-14

<code>df。iterrows()将在每个循环中返回行索引和行本身作为熊猫系列。然后,如果更容易的话,可以使用列的名称获取行值。

请尝试(我猜列的名称):

endpoint = 'http://www.google-analytics.com/collect'
for ind, row in df.iterrows():

    r = requests.post(url = endpoint ,
           data  = {
                   'v'     : "1",
                   't'     : "event",
                   'pa'    : "purchase",
                   'tid'   : "xxx",
                   'cid'   : row["cid"],
                   'ti'    : row["ti"],
                   'ec'    : "ecommerce",
                   'ea'    : "transaction",
                   'ta'    : "aaaa",
                   'tr'    : row["tr"],
                   'cd1'   : row["cd1"],
                   'cd2'   : row["cd2"],
                   'cu'    : "bbb",
                   "pr1id" : "ccc",
                   'pr1nm' : "ddd",
                   'pr1pr' : row['pr1pr'],
                   'pr1qt' : 1,
                   'cs'    : "offline"
                      },
                      headers={'User-Agent': 'User 1.0'
                    }
    )
    time.sleep(0.1) 
    print(r.text)


更常见的是在pandas中使用apply函数来执行这种操作:

endpoint = 'http://www.google-analytics.com/collect'
def sendRowToGA(row):
    r = requests.post(url = endpoint ,
           data  = {
                   'v'     : "1",
                   't'     : "event",
                   'pa'    : "purchase",
                   'tid'   : "xxx",
                   'cid'   : row["cid"],
                   'ti'    : row["ti"],
                   'ec'    : "ecommerce",
                   'ea'    : "transaction",
                   'ta'    : "aaaa",
                   'tr'    : row["tr"],
                   'cd1'   : row["cd1"],
                   'cd2'   : row["cd2"],
                   'cu'    : "bbb",
                   "pr1id" : "ccc",
                   'pr1nm' : "ddd",
                   'pr1pr' : row['pr1pr'],
                   'pr1qt' : 1,
                   'cs'    : "offline"
                      },
                      headers={'User-Agent': 'User 1.0'
                    }
    )
    print(r.text)


df.apply(sendRowToGA, axis = 1)

 类似资料:
  • 嘿, 我无法通过querystring将数据发布到action方法,action方法位于我的代码下面的控制器类中。 我键入一个url“http://localhost:53459/api/esb/post/test“发布价值,什么都不会发生 任何帮助都将不胜感激。

  • 问题内容: 我正在尝试使用来自os x终端的curl命令在我的rails应用程序上创建用户。无论我如何格式化数据,应用程序都会返回未通过我的验证的响应。 我尝试了所有变化。我尝试使用[]括号,尝试了user = {data ..},但似乎没有任何效果。有任何想法吗? 问题答案: 首先,命令末尾有一个多余的“”。 试试这个

  • 我有个大麻烦。我必须将应用程序中的一些参数发布到URL。但是,当我试图在WebView对象中执行此操作时,它会向我报告一个异常,该异常表示“不受信任的证书”(该异常由WebViewClient onReceivedSslError()的重写中的方法报告)。如何才能与服务器正确握手?你能给我一些提示吗?我快疯了... 真的,真的谢谢... 编辑:这是我定义webview的方式 这就是我在WebVie

  • 我有一个问题。 我正在尝试设置简单的服务器,它将从传感器向mySQL发送数据。路径/bezp/数据。php?当我在web brower中执行此操作时,temperature=“number”正在工作。我还可以在串行监视器中看到文本“connected”,所以它会输入IF,但数据库仍然不会更新。 Arduino代码: 此外,温度传感器正在工作,我正在调用另一个文件中的函数。

  • 我正在尝试数据发送到远程AWS API。 数据应该是部分上的。 使用邮递员,我可以发送数据,一切都正常工作: 现在,为了使用,我正在执行以下操作: 请求成功,但没有数据更新!好像没有收到一样。 我无法访问远程API日志文件。 所以我的问题是,这是在Guzzle请求的主体部分发布数据的正确方法吗? 谢了。

  • 问题内容: 是否可以将数据发布到JsonP?还是所有数据都必须作为GET请求传递到查询字符串中? 我有很多数据需要跨域发送到服务,并且太大,无法通过查询字符串发送 解决这个问题有哪些选择? 问题答案: 由于同一个原始策略的(相当明智的)限制,因此无法与另一个域上的服务进行异步。JSON- P之所以起作用,是因为允许您将标签插入DOM,并且它们可以指向任何地方。 当然,您可以使用常规形式的POST来