我正在使用 pandas 从 SaaS REST API json 响应创建一个数据框,并点击一个小阻止程序来清理数据以进行可视化和分析。
我需要通过添加一个条件函数来调整python脚本,以说明该值是否在列表中,然后删除括号,将值分隔为新列并将新列命名为[原始列名+值列表顺序]。
在发布的类似问题中,该函数是在指定列上执行的,而我需要在数据框中的所有 1,400 多列上运行检查。基本上,excel文本到列,列标题名称是[原始列名+值列表顺序]
这是来自 .json 响应的数据框创建脚本
def get_tap_dashboard():
use_fields = ''
for index, value in enumerate(list(WORKFLOW_FIELDS.keys())):
if index != len(list(WORKFLOW_FIELDS.keys())) - 1:
use_fields = use_fields + value + ','
else:
use_fields = use_fields + value
dashboard_head = {'Authorization': 'Bearer {}'.format(get_tap_token()), 'Content-Type': 'application/json'}
dashboard_url = \
TAP_URL + "api/v1/workflows/all?pageSize={}&page=1".format(SIZE) \
+ "&advancedFilter=__WorkflowDescription__~eq~'{}'".format(WORKFLOW_NAME) \
+ "&configurationId={}".format("1128443a-f7a7-4a90-953d-c095752a97a2")
dashboard = json.loads(requests.get(url=dashboard_url, headers=dashboard_head).text)
all_columns = []
for col in dashboard['Items'][0]['Columns']:
all_columns.append(col['Name'])
all_columns = ['ResultSetId'] + all_columns
pd_dashboard = pd.DataFrame(columns=all_columns)
for row in dashboard['Items']:
add_row_values = [row['ResultSetId']]
for col in row['Columns']:
if col['Value'] == '-- Select One --': # dtype issue
add_row_values.append([''])
else:
add_row_values.append(col['Value'])
add_row_df = pd.DataFrame([add_row_values], columns=all_columns)
pd_dashboard = pd_dashboard.append(add_row_df)
tap_dashboard = pd_dashboard
return tap_dashboard.rename(columns=WORKFLOW_FIELDS).reset_index(drop=True)
df = get_tap_dashboard()
任何帮助将不胜感激谢谢大家!
PS - 如果在 Tableau/Tableau prep builder 中这样做更有意义,我有一个 Tableau 创建者许可证