仅返回第一行JSON数据的数据帧

2024-10-05 17:34:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在处理一个web scraping项目,并且有所有正确的代码以我想要的格式返回json数据,如果我使用下面的#print命令,但是当我运行相同的代码时,除了通过Pandas Dataframe,它只返回我要查找的第一行数据。只要运行打印,它就会返回我要查找的17行数据。Dataframe to CSV只给我第一行。完全被难住了!非常感谢任何人的帮助

for item in response['body']:
    DepartureDate = item['legs'][0][0]['departDate']
    ReturnDate = item['legs'][1][0]['departDate']
    Airline = item['legs'][0][0]['airline']['code']
    Origin = item['legs'][0][0]['depart']
    Destination = item['legs'][0][0]['destination']
    OD = (Origin + Destination)
    TrueBaseFare = item['breakdown']['baseFareAmount']
    YQYR = item['breakdown']['fuelSurcharge']
    TAX = item['breakdown']['totalTax']
    TTL = item['breakdown']['totalFareAmount']
    MARKEDUPTTL = item['breakdown']['totalCalculatedFareAmount']
    MARKUP = ((MARKEDUPTTL - TTL) / (TTL)*100)
    FBC = item['fareBasisCode']

    #print(DepartureDate,ReturnDate,Airline,OD,TrueBaseFare,YQYR,TAX,TTL,MARKEDUPTTL,MARKUP,FBC)

MI = pd.DataFrame(
     {'Dept': [DepartureDate],
     'Ret': [ReturnDate],
     'AirlineCode': [Airline],
     'Routing': [OD],
     'RealFare': [TrueBaseFare],
     'Fuel': [YQYR],
     'Taxes': [TAX],
     'RealTotal': [TTL],
     'AgencyTotal': [MARKEDUPTTL],
     'Margin': [MARKUP],
     'FareBasis': [FBC],
    })

df = pd.DataFrame(MI)

pd.set_option('display.max_rows', None)
pd.set_option('display.max_columns', None)
pd.set_option('display.width', None)

df.to_csv('MITest7.csv')

Tags: 数据itempdtaxmarkupttlodbreakdown
1条回答
网友
1楼 · 发布于 2024-10-05 17:34:07

当您在循环后打印所有值时,您将看到只得到最后的值。要解决这个问题,您需要创建列表并将您的值放在那里。 试试这个:

DepartureDate = []
ReturnDate = []
Airline = []
Origin = []
Destination = []
OD = []
TrueBaseFare = []
YQYR = []
TAX = []
TTL = []
MARKEDUPTTL = []
MARKUP = []
FBC = []

for item in response['body']:
    DepartureDate.append(item['legs'][0][0]['departDate'])
    ReturnDate.append(item['legs'][1][0]['departDate'])
    Airline.append(item['legs'][0][0]['airline']['code'])
    Origin.append(item['legs'][0][0]['depart'])
    Destination.append(item['legs'][0][0]['destination'])
    OD.append((Origin[-1] + Destination[-1]))
    TrueBaseFare.append(item['breakdown']['baseFareAmount'])
    YQYR.append(item['breakdown']['fuelSurcharge'])
    TAX.append(item['breakdown']['totalTax'])
    TTL.append(item['breakdown']['totalFareAmount'])
    MARKEDUPTTL.append(item['breakdown']['totalCalculatedFareAmount'])
    MARKUP.append(((MARKEDUPTTL[-1] - TTL[-1]) / (TTL[-1])*100))
    FBC.append(item['fareBasisCode'])

相关问题 更多 >