API의 각 페이지 (페이지 당 100 개의 행 수)에서 데이터를 가져 와서 데이터 프레임을 구성하려고합니다. 현재 아래의 코드는 모든 데이터를 반환하지만 구조가 잘못되었습니다.여러 개의 생성 된 데이터 프레임을 단일 데이터 프레임에 결합하기
17 개의 헤더가 있으므로 17 개의 열에 데이터가 필요합니다. 그러나 [100 rows x 1700 columns]의 데이터 프레임을 출력합니다. 여기서 [10000 rows x 17 columns]가 필요합니다.
나는이 문제를 어떻게 해결할 수 있는지 잘 모르겠다. 어떤 도움을 주시면 감사하겠습니다.
from ebaysdk.finding import Connection as finding
from bs4 import BeautifulSoup
import pandas as pd
x = []
for i in range(1,101):
print(type(i))
api = finding(siteid='EBAY-GB',appid='some_id',config_file=None)
response = api.execute('findItemsByKeywords', {'keywords': 'phone', 'outputSelector' : 'SellerInfo',
'paginationInput': {'entriesPerPage': '2','pageNumber': ' '+str(i)}})
soup = BeautifulSoup(response.content, 'lxml')
items = soup.find_all('item')
headers = ['itemid','title','categoryname','categoryid','postalcode','location','sellerusername','feedbackscore','positivefeedbackpercent','topratedseller','shippingservicecost','buyitnowavailable','currentprice','starttime','endtime','watchcount','conditionid']
for object in headers:
values = [element.text for element in soup.find_all(object)]
x.append(values)
df = pd.DataFrame(x)
df = df.T
print(x)
#[['152668959069', '252999725410'], ['Samsung GALAXY Ace GT-S5830i (Unlocked) Smartphone Android Phone- ALL COLOURS UK', '8GB 3G Unlocked Android 5.1 Quad Core Smartphone Mobile Phone 2 SIM GPS qHD'], ['Mobile & Smart Phones', 'Mobile & Smart Phones'], ['9355', '9355'], ['RM137PP'], ['Rainham,United Kingdom', 'United Kingdom'], ['deals4u_shop', 'smartlife2017'], ['15700', '456'], ['99.9', '98.5'], ['true', 'true'], ['0.0', '0.0'], ['false', 'false'], ['32.49', '48.9'], ['2017-08-18T18:36:28.000Z', '2017-06-19T09:04:40.000Z'], ['2017-12-16T18:36:28.000Z', '2017-12-16T09:04:40.000Z'], ['272', '134'], ['1000', '1000']]
print(df)
0 1 \
0 152668959069 Samsung GALAXY Ace GT-S5830i (Unlocked) Smartp...
1 252999725410 8GB 3G Unlocked Android 5.1 Quad Core Smartpho...
2 3 4 5 \
0 Mobile & Smart Phones 9355 RM137PP Rainham,United Kingdom
1 Mobile & Smart Phones 9355 None United Kingdom
6 7 8 9 ... 24 25 26 27 28 29 \
0 deals4u_shop 15700 99.9 true ... 456 98.5 true 0.0 false 48.9
1 smartlife2017 456 98.5 true ... 456 98.5 true 0.0 false 48.9
30 31 32 33
0 2017-06-19T09:04:40.000Z 2017-12-16T09:04:40.000Z 214 1000
1 2017-06-19T09:04:40.000Z 2017-12-16T09:04:40.000Z 182 1000
편집 : 2 페이지의 처음 두 항목에 대한 첫 페이지와 안양에서 첫 번째 두 항목에 대해 더 많은 코드 및 인쇄 X를 추가했습니다.
df 출력의 문제점은 무엇입니까? 그리고 [DataFrame] (https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.html) * columns * 인수에 헤더를 전달하십시오. – Parfait
문제는 df가 각 루프마다 [2 행 x17 열], [2 행 x34 열], [2 행 x51 열] 등을 출력하고 있다는 것입니다. 어디서 [2 행 × 17 열], [4 행 × 17 열], [6 행 × 17 열] 등의 결과를 생성해야합니까? –
이전에 열을 설정하려고했는데 다음 오류를 반환합니다. 코드 : df = pd.DataFrame (x, columns = headers) AssertionError : 전달 된 17 개의 열, 전달 된 데이터의 2 번째 열 –