如何重新排列熊猫数据框?

时间:2018-12-21 12:24:48

标签: python pandas dataframe

我想使用SAP系统中的数据来提供IForest模型。 为此,我使用RFC_READ_TABLE来获取数据。 RFC_READ_TABLE的输出是dict对象。 当我将dict对象放入pandas DataFrame中时,我没有得到所需的DataFrame,也不知道如何获取它。 我想要一个像这样的DataFrame:

    Col1  Col2  Col3
0:  val01 val02 val03
1:  val11 val12 val13

但是获得一个像这样的DataFrame:

                                                 DATA
0   {'WA': '700,AA ,0017,US ,NEW YORK            ,...

我想每个字段都在一个String中。字段应为700或AA。 而且我不能给列名称指定唯一的列是DATA。

我试图将RFC_READ_TABLE输出直接放入pd.DataFrame中。 失败了,因为输出给出了

result = conn.call('RFC_READ_TABLE',QUERY_TABLE='SPFLI',DELIMITER=',')
print(result)
Out:
{'DATA': [{'WA': '700,AA ,0017,US ,NEW YORK            ,JFK,US ,SAN        
FRANCISCO       ,SFO,      361 ,110000,140100,2572.0000,MI , , 0'}......
'FIELDS': [{'FIELDNAME': 'MANDT', 'OFFSET': '000000', 'LENGTH':   
'000003', 'TYPE': 'C', 'FIELDTEXT': 'Client'}, ......
'OPTIONS': []}

所以数据,字段和选项是关键,后面的所有内容都是字符串(我想)。为了摆脱“ FIELDS”和“ OPTIONS”,我这样做:

result = dict(list(result.items())[:1])

然后我将“结果”放入pd.DataFrame:

df = pd.DataFrame.from_dict(result)
print(df)
Out:
                                                 DATA
0   {'WA': '700,AA ,0017,US ,NEW YORK            ,...
1   {'WA': '700,AA ,0064,US ,SAN FRANCISCO       ,...

因此,不显示某些值,并且行中的每个字段都在一个字段中。 我想要这样的东西:

    MANDT   CARRID   CONNID 
0   700      AA        0017
1   700      AA        0064

以此类推。

我尝试过:

columnnames=['MANDT','CARRID','CONNID',...]
df = pd.DataFrame.from_dict(result,columns=columnnames)

但是得到:

ValueError:不能将列参数与orient ='columns'一起使用

所以我尝试了:

orient='index'

但是得到:

AssertionError:传递了16列,传递的数据有26列

我认为那不是我想要的。

表有26行。

1 个答案:

答案 0 :(得分:0)

用于创建我有的字典。

d = {'DATA': [{'WA': '700,AA ,0017,US ,NEW YORK            ,JFK,US ,SAN FRANCISCO           
,SFO,      361 ,110000,140100,2572.0000,MI , , 0'}, {'WA': '700,AA ,0064,US ,SAN  
FRANCISCO       ,SFO,US ,NEW YORK            ,JFK,      321 
,090000,172100,2572.0000,MI , , 0'}, {'WA': '700,AZ ,0555,IT ,ROME                
,FCO,DE ,FRANKFURT           ,FRA,      125 ,190000,210500,845.0000 ,MI , , 0'}, 
{'WA': '700,AZ ,0788,IT ,ROME                ,FCO,JP ,TOKYO               ,TYO,      
775 ,120000,085500,6130.0000,MI , , 1'}, {'WA': '700,AZ ,0789,JP ,TOKYO               
,TYO,IT ,ROME                ,FCO,      940 ,114500,192500,6130.0000,MI , , 0'}, 
{'WA': '700,AZ ,0790,IT ,ROME                ,FCO,JP ,OSAKA               ,KIX,      
815 ,103500,081000,6030.0000,MI ,X, 1'}, {'WA': '700,DL ,0106,US ,NEW YORK            
,JFK,DE ,FRANKFURT           ,FRA,      475 ,193500,093000,3851.0000,MI , , 1'}, 
{'WA': '700,DL ,1699,US ,NEW YORK            ,JFK,US ,SAN FRANCISCO       ,SFO,      
382 ,171500,203700,2572.0000,MI , , 0'}, {'WA': '700,DL ,1984,US ,SAN FRANCISCO       
,SFO,US ,NEW YORK            ,JFK,      325 ,100000,182500,2572.0000,MI , , 0'}, 
{'WA': '700,JL ,0407,JP ,TOKYO               ,NRT,DE ,FRANKFURT           ,FRA,      
725 ,133000,173500,9100.0000,KM , , 0'}, {'WA': '700,JL ,0408,DE ,FRANKFURT           
,FRA,JP ,TOKYO               ,NRT,      675 ,202500,154000,9100.0000,KM ,X, 1'}, 
{'WA': '700,LH ,0400,DE ,FRANKFURT           ,FRA,US ,NEW YORK            ,JFK,      
444 ,101000,113400,6162.0000,KM , , 0'}, {'WA': '700,LH ,0401,US ,NEW YORK            
,JFK,DE ,FRANKFURT           ,FRA,      435 ,183000,074500,6162.0000,KM , , 1'}, 
{'WA': '700,LH ,0402,DE ,FRANKFURT           ,FRA,US ,NEW YORK            ,JFK,      
455 ,133000,150500,6162.0000,KM ,X, 0'}, {'WA': '700,LH ,2402,DE ,FRANKFURT           
,FRA,DE ,BERLIN              ,SXF,       65 ,103000,113500,555.0000 ,KM , , 0'}, 
{'WA': '700,LH ,2407,DE ,BERLIN              ,TXL,DE ,FRANKFURT           ,FRA,       
65 ,071000,081500,555.0000 ,KM , , 0'}, {'WA': '700,QF ,0005,SG ,SINGAPORE           
,SIN,DE ,FRANKFURT           ,FRA,      825 ,225000,053500,*000.0000,KM , , 1'}, 
{'WA': '700,QF ,0006,DE ,FRANKFURT           ,FRA,SG ,SINGAPORE           ,SIN,      
670 ,205500,150500,*000.0000,KM , , 1'}, {'WA': '700,SQ ,0002,SG ,SINGAPORE           
,SIN,US ,SAN FRANCISCO       ,SFO,     1105 ,170000,192500,8452.0000,MI , , 0'}, 
{'WA': '700,SQ ,0015,US ,SAN FRANCISCO       ,SFO,SG ,SINGAPORE           ,SIN,     
1125 ,160000,024500,8452.0000,MI , , 2'}, {'WA': '700,SQ ,0158,SG ,SINGAPORE           
,SIN,ID ,JAKARTA             ,JKT,       95 ,152500,160000,560.0000 ,MI , , 0'}, 
{'WA': '700,SQ ,0988,SG ,SINGAPORE           ,SIN,JP ,TOKYO               ,TYO,      
400 ,163500,001500,3125.0000,MI , , 1'}, {'WA': '700,UA ,0941,DE ,FRANKFURT           
,FRA,US ,SAN FRANCISCO       ,SFO,      696 ,143000,170600,5685.0000,MI , , 0'}, 
{'WA': '700,UA ,3504,US ,SAN FRANCISCO       ,SFO,DE ,FRANKFURT           ,FRA,      
630 ,150000,103000,5685.0000,MI , , 1'}, {'WA': '700,UA ,3516,US ,NEW YORK            
,JFK,DE ,FRANKFURT           ,FRA,      445 ,162000,054500,6162.0000,KM , , 1'}, 
{'WA': '700,UA ,3517,DE ,FRANKFURT           ,FRA,US ,NEW YORK            ,JFK,      
495 ,104000,125500,6162.0000,KM , , 0'}], 'FIELDS': [{'FIELDNAME': 'MANDT', 
'OFFSET': '000000', 'LENGTH': '000003', 'TYPE': 'C', 'FIELDTEXT': 'Client'}, 
{'FIELDNAME': 'CARRID', 'OFFSET': '000004', 'LENGTH': '000003', 'TYPE': 'C', 
'FIELDTEXT': 'Airline Code'}, {'FIELDNAME': 'CONNID', 'OFFSET': '000008', 
'LENGTH': '000004', 'TYPE': 'N', 'FIELDTEXT': 'Flight Connection Number'}, 
{'FIELDNAME': 'COUNTRYFR', 'OFFSET': '000013', 'LENGTH': '000003', 'TYPE': 'C', 
'FIELDTEXT': 'Country Key'}, {'FIELDNAME': 'CITYFROM', 'OFFSET': '000017',  
'LENGTH': '000020', 'TYPE': 'C', 'FIELDTEXT': 'Departure city'}, {'FIELDNAME': 
'AIRPFROM', 'OFFSET': '000038', 'LENGTH': '000003', 'TYPE': 'C', 'FIELDTEXT': 
'Departure airport'}, {'FIELDNAME': 'COUNTRYTO', 'OFFSET': '000042', 'LENGTH': 
'000003', 'TYPE': 'C', 'FIELDTEXT': 'Country Key'}, {'FIELDNAME': 'CITYTO', 
'OFFSET': '000046', 'LENGTH': '000020', 'TYPE': 'C', 'FIELDTEXT': 'Arrival city'}, 
{'FIELDNAME': 'AIRPTO', 'OFFSET': '000067', 'LENGTH': '000003', 'TYPE': 'C', 
'FIELDTEXT': 'Destination airport'}, {'FIELDNAME': 'FLTIME', 'OFFSET': '000071', 
'LENGTH': '000010', 'TYPE': 'I', 'FIELDTEXT': 'Flight time'}, {'FIELDNAME': 
'DEPTIME', 'OFFSET': '000082', 'LENGTH': '000006', 'TYPE': 'T', 'FIELDTEXT': 
'Departure time'}, {'FIELDNAME': 'ARRTIME', 'OFFSET': '000089', 'LENGTH': 
'000006', 'TYPE': 'T', 'FIELDTEXT': 'Arrival time'}, {'FIELDNAME': 'DISTANCE', 
'OFFSET': '000096', 'LENGTH': '000009', 'TYPE': 'P', 'FIELDTEXT': 'Distance'}, 
{'FIELDNAME': 'DISTID', 'OFFSET': '000106', 'LENGTH': '000003', 'TYPE': 'C', 
'FIELDTEXT': 'Mass unit of distance (kms, miles)'}, {'FIELDNAME': 'FLTYPE', 
'OFFSET': '000110', 'LENGTH': '000001', 'TYPE': 'C', 'FIELDTEXT': 'Flight type'}, 
{'FIELDNAME': 'PERIOD', 'OFFSET': '000112', 'LENGTH': '000003', 'TYPE': 'b', 
'FIELDTEXT': 'Arrival n day(s) later'}], 'OPTIONS': []}