【发布时间】:2017-11-16 13:05:02
【问题描述】:
我有以下包含 JSON 对象的文件:
{"v": "1","uuid": "c62f3e001c5a43d7bc663eef7db5372c","source": 3,"uniqueName": "hive","sensorId": 8324,"alarm": false,"date": 1497387606620,"movement": 49280,"rssi": 362,"lux": 16,"magnet": 16,"ageSent": 69206224,"ipAddress": "0.0.0.0","locationSensorId": 0,"locationCounter": 0,"readerId": 67,"geo": {"x": "1","y": "1","z": "1"},"sys": {},"fa": {},"requestOriginTypeId": 2,"failover": {"adv": 1,"oi": 1,"c": 1,"cr": 1},"D": "3","W": 24,"M": 5,"Y": 2017,"user": {"ui": "0","id": "0","cntry": "UK","cty": "NEWBY","gender": 0,"age": 0,"dt": 0,"scr": 0},"resp": {"rid": 67,"adv": 10000001,"oi": 1,"c": 1,"cr": 1,"p": 1.0,"b": 1.0,"curr": "£","rb": 1}}
我有一个问题,我需要在这里访问值“adv”:100000001:
"resp": {"rid": 67,"adv": 10000001,"oi": 1,"c": 1,"cr": 1,"p": 1.0,"b": 1.0,"curr": "£","rb": 1}
由于格式的原因,我的 dataFrame 包含一个带有值的列“resp”:
{"rid": 67,"adv": 10000001,"oi": 1,"c": 1,"cr": 1,"p": 1.0,"b": 1.0,"curr": "£","rb": 1}
获取该值的最佳方式是什么?我正在考虑从 {u'adv': 1, u'cr': 1, u'c': 1, u'oi': 1} 创建一个系列(“resp”下的值)
我还有另一个问题,这是我的主要问题。我有一个从上面的 json 创建的大 df,最终将只包含列
df_json = df_json[['day_time','sensor_id','customer_id','rssi','date','time']]
在此之前,一些列已重命名,这就是为什么您可能在 json 中看不到相关性的原因。
目前数据如下所示(day_time = date only [见第一行]/它是日期,但日期将接近 df 的末尾):
day_time sensor_id customer_id rssi advertiser_id \
0 2017-03-17 4000068 76 352 1000001
0 2017-03-17 09:20:17.708 4000068 56 374 1000001
1 2017-03-17 09:20:42.561 4000068 60 392 1000001
0 2017-03-17 09:44:21.728 4000514 76 352 1000001
0 2017-03-17 10:32:45.227 4000461 76 332 1000001
0 2017-03-17 12:47:06.639 4000046 43 364 1000001
0 2017-03-17 12:49:34.438 4000046 62 423 1000001
0 2017-03-17 12:52:28.430 4000072 62 430 1000001
1 2017-03-17 12:52:32.593 4000072 62 394 1000001
0 2017-03-17 12:53:17.708 4000917 76 335 1000001
我需要这个 df 被 day_stamp 和 sensor_id 多索引,这样数据(如果我错了,请纠正我!)将显示为:
date sensor_id customer_id rssi advertiser_id \
0 2017-03-17 4000068 76 352 1000001
0 56 374 1000001
1 60 392 1000001
0 2017-03-17 4000514 76 352 1000001
0 2017-03-17 4000461 76 332 1000001
我想要这种格式的数据的原因是我可以将 .diff() 函数应用于时间,并计算出每个 sensor_id 的每条记录之间的时间差。
我相信这也有问题。因为 time.diff() 最终会找到一个 ID 和另一个 ID 之间的时间差。是否有包含 diff() 方法来查找具有相同 sensor_id 的记录之间的时间差?
我想再次强调,我的主要问题是对现有 df 进行多索引(感觉这里有 5 个问题)。如何将 day_time 和 sensor_id 输出为可在 multiIndex 中使用的有效数组?
【问题讨论】:
标签: python json pandas indexing multi-index