【问题标题】:python loop down a column and append output to a dataframepython循环一列并将输出附加到数据框
【发布时间】:2018-11-19 04:43:36
【问题描述】:

我正在使用 df.iterrows() 向下迭代一列产品代码:

然后将代码发送到 API 并返回有关我的产品的各种详细信息。即新的和二手的销售价格。

每次迭代后,我都想将数据附加到数据框中。我应该在我的数据框中看到 100 行数据,但我收到的只是最终产品代码的单行数据。

我认为我需要创建第二个嵌套循环,在每次迭代时获取我的输出并将其附加到数据帧,但我不确定从哪里开始。我的代码如下。任何帮助将不胜感激。

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)

【问题讨论】:

    标签: python loops dataframe append nested-loops


    【解决方案1】:

    最终到达那里,创建了一个数据帧列表,并在循环结束时将它们连接起来:

    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)
    

    【讨论】:

      猜你喜欢
      • 2017-03-22
      • 2021-03-15
      • 2021-09-22
      • 1970-01-01
      • 2021-07-29
      • 2014-04-03
      • 2022-07-06
      • 2020-07-23
      • 1970-01-01
      相关资源
      最近更新 更多