【问题标题】:Import text file from website to powerbi using panda dataframe使用 panda 数据框将文本文件从网站导入到 powerbi
【发布时间】:2019-09-22 14:52:54
【问题描述】:

TEXT OUTPUT EXAMPLE我需要导入我使用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)

【问题讨论】:

  • 您能否在列表的前几行打印出响应,我们可以从那里进行分析。一些观察,csv阅读器期望从文件而不是字符串对象中读取,它需要定义一个分隔符(通常是逗号)。

标签: python python-3.x powerbi


【解决方案1】:

所以我理解输入数据具有以下结构:

['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

请注意,我相信您必须在末尾添加 input_df 才能使其被 Power Bi 识别

在你的情况下,我认为

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

raw_input_data具有相同的结构。

【讨论】:

  • 谢谢布鲁诺。打印的输出文件按 [ ] 分组在一起,另外我在 text 中还有一些逗号,显示为 'Y, Weekly' ,其余数据像 'YR' 分隔,我如何将其放入数据框,以便我可以导入到 PowerBI
  • 还有排除标题行的方法,因为我不需要导入该数据
  • 我的主要问题是要将其导入 PowerBI ,它说它必须在 DataFrame 中。我找不到将字符串导入数据框的方法。有A到W列
  • 你能更新问题并给我几行回复,以便我可以看到数据的结构......
  • 我在顶部的文本输出示例中添加了一个链接
猜你喜欢
  • 2011-06-23
  • 2020-03-16
  • 1970-01-01
  • 2021-12-22
  • 1970-01-01
  • 2020-09-05
  • 1970-01-01
  • 1970-01-01
  • 2019-09-01
相关资源
最近更新 更多