【发布时间】:2020-03-07 00:00:52
【问题描述】:
有很多关于如何合并两个熊猫数据框的例子,但我的问题是我有两种数据。 data1 是一个 csv 数据,我用 pandas 读取它并将其转换为数据帧,而另一个 data2 是 json 格式。
这里是一个json数据的例子:
[{'timestamp': 1572430625231, 'url': 'brakePressure', 'value': 10},
{'timestamp': 1572430625275, 'url': 'lateralAcceleration', 'value': 120},
{'timestamp': 1572430625290, 'url': 'longitudinalAcceleration', 'value': 110},
{'timestamp': 1572430625299, 'url': 'acceleratorPosition', 'value': 1230},
{'timestamp': 1572430625310, 'url': 'currentTorque', 'value': 10}]
如您所见,每个特征值都在带有时间戳的字典中。问题是如果我将其转换为数据帧,行将是时间戳、url 和值,但我不希望这样,我希望我的列(功能)将是刹车压力、横向加速等。在每一列中都有与该功能相对应且在此 json 中的所有值。
我的目标是根据时间戳合并两个数据集。这太难了,因为在 json 中,我有一个与每个特征值相关联的时间戳,相反,在 csv 数据中,我有一个对应于一行的时间戳(这意味着 n 个特征值而不是单个特征值)。我非常努力地做到这一点但没有机会,所以我想也许我可以搜索哪个是最接近的时间戳,然后一次替换一个值,这是我的尝试:
def sync_vehicle_gps_data(dataset=vehicle_data, gps_data=gps_data):
vehicle = dataset.copy()
gps = gps_data.copy()
d = {}
for json in vehicle:
timestamp, feature, val = json.values()
index = abs(gps['timestamp'] - timestamp).idxmin()
print("closest value index = ", index)
gps.at[index, feature] = val
return gps
vehicle_data 是 json 数据,gps_data 是 pandas DataFrame,如您所见,我在整个数据集中搜索哪个时间戳最接近单个特征时间戳,然后更新该特定值,但这不起作用对我来说很好。我最终搞砸了数据。有没有办法在 python 中做到这一点?如果有的话,我也可以使用任何其他库,所以我不限于熊猫。
预期的输出是我可以将上面 json 中的这些值附加到现有数据帧中,这意味着在此示例中将添加新列“brakePressure”、“lateralAcceleraiton”等,并且每个特征的值(因为它在上面的 json 中,是的,它们是零,但这只是一个示例)将放在该行的时间戳最接近上面 json 中每个功能的时间戳键的时间戳的行中。我知道这是一个非常复杂的问题,很难解释,但我希望你明白我的意思。 这是一个例子:假设这是gps数据
timestamp X Y Z
1572430510880 595.00 179.00 -60.00
1572430510890 -0.23 -0.09 0.01
1572430510900 -0.11 -0.02 0.04
1572430510910 -1.96 -5.19 -6.10
我想要这个输出(我只为一个特性展示这个):
timestamp X Y Z brakePressure
1572430510880 595.00 179.00 -60.00 10
1572430510890 -0.23 -0.09 0.01 nan
1572430510900 -0.11 -0.02 0.04 nan
1572430510910 -1.96 -5.19 -6.10 nan
字典中的brakePressure 特征的值放在第一行,因为上面字典中与brakePressure 时间戳最接近的gps 时间戳也在第一行。基本上我想对 json 中的所有特征做同样的事情,我想将所有这些特征值与 gps 数据同步
【问题讨论】:
-
你能发布一个期望输出的例子吗?
-
@naive 我更新了。我可以显示所需的输出,因为我没有。我没有实现它。我希望您能从我刚刚进行的编辑中理解我的意思
-
你可以试试数据透视表。
-
@naive 我编辑了问题并展示了一个数据应该如何的示例。
标签: python json pandas dataframe merge