我一直在玩一个能够吸收CSV数据的函数,并使用pandas to_dict函数作为实现将数据转换为JSON的最终目标之一.问题是它正在修改数字(例如1.6变为1.6000000000000001).我并不担心准确性的损失,但是因为用户会看到数字的变化,所以看起来......业余.
我知道这是在此之前已经出现的东西,但它是2年前,并没有真正得到很好的回答,而且我有一个额外的复杂性 - 我希望转换为字典的数据框可以是任何组合的数据类型.因此,先前解决方案的问题是:
所以,从高层次来看,我的问题是:
有没有更好的方法来确保数字不被修改,但保存在数值数据类型中?这是一个改变我首先导入CSV数据的方式的问题吗?当然有一个我忽略的简单解决方案?
这是一个简单的脚本,将重现此错误:
import pandas as pd
import sys
if sys.version_info[0] < 3:
from StringIO import StringIO
else:
from io import StringIO
CSV_Data = "Index,Column_1,Column_2,Column_3,Column_4,Column_5,Column_6,Column_7,Column_8\nindex_1,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8\nindex_2,2.1,2.2,2.3,2.4,2.5,2.6,2.7,2.8\nindex_3,3.1,3.2,3.3,3.4,3.5,3.6,3.7,3.8\nindex_4,4.1,4.2,4.3,4.4,4.5,4.6,4.7,4.8"
input_data = StringIO(CSV_Data)
df = pd.DataFrame.from_csv(path = input_data, header = 0, sep=',', index_col=0, encoding='utf-8')
print(df.to_dict(orient = 'records'))
Run Code Online (Sandbox Code Playgroud) 我正在尝试设置一个使用 Google Analytics API 的应用程序。我的所有授权步骤都正常工作,并且可以按预期提取所有数据。然而,目前它正在工作,因为我已将自己的视图 ID 硬编码到 API 的查询中。例如:
response = analytics.reports().batchGet(
body={
"reportRequests":
[
{
"viewId": "ga:12345678",
...
Run Code Online (Sandbox Code Playgroud)
据我了解,我需要做的是在开始查询数据之前,使用服务对象首先获取视图 ID(或视图 ID 列表),然后在数据查询中使用它。我一直试图这样做,但惨遭失败。基本上,我有以下内容(只是为了获取帐户列表的第一步):
credentials = client.OAuth2Credentials.from_json(session['credentials'])
http = credentials.authorize(httplib2.Http())
analytics = build('analytics', 'v4', http=http) #create the service object
data = analytics.management().accounts().list().execute()
Run Code Online (Sandbox Code Playgroud)
我收到的错误是“资源”对象没有属性“管理”。我在这里缺少什么?