use*_*657 6 python json pandas
我有这个简短版本的ADSB json数据,想将其转换为datacab列,例如Icao,Alt,Lat,Long,Sdd,Cou .....
在Alperen告诉我这样做之后
df = pd.read_json('2016-06-20-2359Z.json', lines=True),
Run Code Online (Sandbox Code Playgroud)
我可以将其加载到DataFrame中。但是,df.acList是
[{'Id':10537990,'Rcvr':1,'HasSig':False,...
名称:acList,dtype:对象
如何获取Icao,Alt,Lat,Long,Sdd,Cou数据?
“ src”:1,
“提要”:[
{
“ id”:1,
“名称”:“ ADSBexchange.com”,
“ polarPlot”:false
}
],
“ srcFeed”:1,
“ showSil”:是的,
“ showFlg”:是的,
“ showPic”:是的,
“ flgH”:20,
“ flgW”:85,
“ acList”:[
{
“ Id”:11281748,
“ Rcvr”:1,
“ HasSig”:否,
“ Icao”:“ AC2554”,
“错误”:false,
“ Reg”:“ N882AS”,
“ FSeen”:“ \ /日期(1466467166951)\ /”,
“ TSecs”:3,
“ CMsgs”:1,
“ AltT”:0,
“ Tisb”:否,
“ TrkH”:否,
“类型”:“ CRJ2”,
“ Mdl”:“ 2001
炸弹公司
CL-600-2B19“,
“ Man”:“ Bombardier”,
“ CNum”:“ 7503”,
“ Op”:“ EXPRESSJET AIRLINES INC-乔治亚州亚特兰大”,
“ OpIcao”:“ ASQ”,
“ Sqk”:“”,
“ VsiT”:0,
“ WTC”:2,
“种类”:1,
“ Engines”:“ 2”,
“ EngType”:3,
“ EngMount”:1,
“ Mil”:false,
“ Cou”:“美国”,
“ HasPic”:false,
“感兴趣”:false,
“ FlightsCount”:0,
“ Gnd”:false,
“ SpdTyp”:0,
“ CallSus”:否,
“ TT”:“ a”,
“ Trt”:1,
“年份”:“ 2001”
},
{
“ Id”:11402205,
“ Rcvr”:1,
“ HasSig”:是的,
“签名”:110,
“ Icao”:“ ADFBDD”,
“错误”:false,
“ FSeen”:“ \ /日期(1466391940977)\ /”,
“ TSecs”:75229,
“ CMsgs”:35445,
“ Alt”:8025,
“ GAlt”:8025,
“ AltT”:0,
“通话”:“ TEST1234”,
“ Tisb”:否,
“ TrkH”:否,
“ Sqk”:“ 0262”,
“帮助”:false,
“ VsiT”:0,
“ WTC”:0,
“种类”:0,
“ EngType”:0,
“ EngMount”:0,
“ Mil”:是的,
“ Cou”:“美国”,
“ HasPic”:false,
“感兴趣”:false,
“ FlightsCount”:0,
“ Gnd”:是的,
“ SpdTyp”:0,
“ CallSus”:否,
“ TT”:“ a”,
“ Trt”:1
}
],
“ totalAc”:4231,
“ lastDv”:“ 636019887431643594”,
“ shtTrlSec”:61,
“ stm”:1466467170029
}
Ser*_*nov 10
如果您的数据已经acList在pandas DataFrame的列中,则只需执行以下操作:
import pandas as pd
pd.io.json.json_normalize(df.acList[0])
Alt AltT Bad CMsgs CNum Call CallSus Cou EngMount EngType ... Sqk TSecs TT Tisb TrkH Trt Type VsiT WTC Year
0 NaN 0 False 1 7503 NaN False United States 1 3 ... 3 a False False 1 CRJ2 0 2 2001
1 8025.0 0 False 35445 NaN TEST1234 False United States 0 0 ... 0262 75229 a False False 1 NaN 0 0 NaN
Run Code Online (Sandbox Code Playgroud)
Thi*_*obo 10
@Sergey 的回答为我解决了这个问题,但我遇到了问题,因为我的数据框列中的 json 被保存为字符串而不是对象。我必须添加映射列的附加步骤:
import json
import pandas as pd
pd.io.json.json_normalize(df.acList.apply(json.loads))
Run Code Online (Sandbox Code Playgroud)
从pandas 1.0开始, json_normalize 在顶级命名空间中可用。因此使用:
import pandas as pd
pd.json_normalize(df.acList[0])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5454 次 |
| 最近记录: |