Python зацикливает столбец и добавляет вывод к кадру данных - PullRequest
0 голосов
/ 19 ноября 2018

Я перебираю столбец кодов продуктов, используя df.iterrows ():

Затем коды отправляются в API и возвращают различные сведения о моих продуктах.т.е. новые и подержанные цены продажи.

После каждой итерации я хочу добавить данные в фрейм данных.Я должен видеть сотни строк данных в моем фрейме данных, но вместо этого все, что я получаю, - это одна строка данных для окончательного кода продукта.

Я думаю, что мне нужно создать второй вложенный цикл, который берет мой вывод на каждомитерации и добавляет его к кадру данных, но я не уверен, с чего начать.Мой код ниже.Любая помощь будет оценена.

import numpy as np
import pandas as pd

accesskey = 'xxxx'
api = keepaAPI.API(accesskey)

df = pd.read_excel('C:/Users/xxxx.xlsx',
                  sheet_name = 'abebooks',
                  header = 0,
                  index_col = None,
                  usecols = "A:P",
                  convert_float = True)

for index, row in df.iterrows():
products = api.ProductQuery(row['xxx'])
product = products[0]

newprice = products[0]['data']['NEW']
newpricetime = products[0]['data']['NEW_time']
usedprice = products[0]['data']['USED']
usedpricetime = products[0]['data']['USED_time']
bsr = products[0]['data']['SALES']
bsrtime = products[0]['data']['SALES_time']

df = pd.DataFrame([[products[0]['title'], 
products[0]['asin'],newprice[-1], usedprice[-1], bsr[-1], 
products[0]['binding']]])

df2 = pd.DataFrame([], columns=list(["title", "Asin", 
"New price", "Used price", "BSR", "Binding"]))

df.append(df2, ignore_index=True)

1 Ответ

0 голосов
/ 21 ноября 2018

добрался до конца, создал список фреймов данных и соединил их в конце цикла:

dfa_list = []

import numpy as np
import pandas as pd

accesskey = 'xxxx'
api = keepaAPI.API(accesskey)

df = pd.read_excel('C:/Users/xxxx.xlsx',
              sheet_name = 'abebooks',
              header = 0,
              index_col = None,
              usecols = "A:P",
              convert_float = True)

for index, row in df.iterrows():
products = api.ProductQuery(row['xxx'])
product = products[0]

newprice = products[0]['data']['NEW']
newpricetime = products[0]['data']['NEW_time']
usedprice = products[0]['data']['USED']
usedpricetime = products[0]['data']['USED_time']
bsr = products[0]['data']['SALES']
bsrtime = products[0]['data']['SALES_time']

df = pd.DataFrame([[products[0]['title'], 
products[0]['asin'],newprice[-1], usedprice[-1], bsr[-1], 
products[0]['binding']]])

df2 = pd.DataFrame([], columns=list(["title", "Asin", 
"New price", "Used price", "BSR", "Binding"]))


dfa_list.append(df2)

it_df = pd.concat(dfa_list)
...