Python 使用panda dataframe将文本文件从网站导入powerbi

Python 使用panda dataframe将文本文件从网站导入powerbi,python,python-3.x,powerbi,Python,Python 3.x,Powerbi,我需要导入使用python请求导入的csv文本文件。我的代码可以使用自己的API密钥从网站导入数据。但要将其导入POwerBI,必须将其转换为数据帧。但是我不能知道怎么做。任何帮助都将不胜感激 response = requests.get('https://my url websaite', headers=headers) wrapper = csv.reader(response.text.strip().split('\n')) for record in wrapper: A

我需要导入使用python请求导入的csv文本文件。我的代码可以使用自己的API密钥从网站导入数据。但要将其导入POwerBI,必须将其转换为数据帧。但是我不能知道怎么做。任何帮助都将不胜感激

response = requests.get('https://my url websaite', headers=headers)
wrapper = csv.reader(response.text.strip().split('\n'))
for record in wrapper:
    A = str(record[0])
    B = str(record[1])
    C = str(record[2])
    D = str(record[3])
    E = str(record[4])
    F = str(record[5])
    G = str(record[6])
    H = str(record[7])
    I = str(record[8])
    J = str(record[9])
    K = str(record[10])
    L = str(record[11])
    M = str(record[12])
    N = str(record[13])
    O = str(record[14])
    P = str(record[15])
    Q = str(record[16])
    R = str(record[17])
    S = str(record[18])
    T = str(record[19])
    U = str(record[20])
    V = str(record[21])
    W = str(record[22])



    print (A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W)

因此,我了解输入数据具有以下结构:

['A', 'B', 'C', 'D']
['DEV', 'J', 'BBBB', '2019-08-28']
['5R', 'J', 'EMAIL', '2019-05-21']
您需要一个脚本来转换pandas数据帧中的数据,以便使用Power Bi上载。
作为第一步,您必须将此文本数据转换为仅包含以逗号分隔的值的行的文本,使其可读,如:

A, B, C, D
DEV, J, BBBB, 2019-08-28
5R, J, EMAIL, 2019-05-21
然后,当
csv.reader
读取IO对象(类似于文件)而不仅仅是文本字符串时,您需要使用
IO.StringIO
将文本更改为IO对象。一旦读取了所有(非空)行,就可以直接创建数据帧,其中假定第一行是标题

脚本:

import io
import csv
import pandas as pd

raw_input_data = '''
['A', 'B', 'C', 'D']
['DEV', 'J', 'BBBB', '2019-08-28']
['5R', 'J', 'EMAIL', '2019-05-21']'''

# condition the input data to make it a readable csv
raw_input_data = raw_input_data.replace('[', '').replace(']', '').replace('\'', '')
raw_input_file = io.StringIO(raw_input_data)
csv_reader = csv.reader(raw_input_file, delimiter=',')

# append each non empty row to the list input_rows and convert to a 
# pandas dataframe, assume first row is the header
input_rows = []
for row in csv_reader:
    if row:
        input_rows.append(row)

input_df = pd.DataFrame(input_rows[1:], columns=input_rows[0])
print(input_df.head(10))
input_df

注:我认为您必须在末尾添加
输入_df
,以便Power Bi识别它

就你而言,我认为

response = requests.get('https://my url websaite', headers=headers)

具有与原始输入数据相同的结构

能否在列表的前几行打印出响应,我们可以从中进行分析。根据一些观察,csv阅读器希望从文件而不是字符串对象读取,并且需要定义一个分隔符(通常是逗号)。谢谢Bruno。打印的输出文件按[]组合在一起,加上我在文本中还有一些逗号,显示为“Y,Weekly”,其余的数据像“YR”一样分开,我如何将其放入数据框中以便导入PowerBi还有排除标题行的方法吗,由于我不需要导入该数据,我的主要问题是要将其导入到PowerBI,它说它必须在数据帧中。我找不到将字符串导入数据帧的方法。有A列可以更新问题并给我几行回复,这样我就可以看到数据的结构…我在顶部的文本输出示例中添加了一个链接