我正在开发一个从大文件中提取数据的工具。这些数据可以根据称为P1和P2的2个属性进行排序,并在此形式下:
-> P1[0] :
|-> P2[0] : data
|-> P2[1] : data
...
-> P1[1]:
|-> P2[0] : data
|-> P2[1] : data
...
为了更好地理解我的问题,P1可以被认为是时间,P2可以被认为是一组汽车的选择,这些汽车具有一组可以以pd的形式表示的数据。DataFrame包含一组指定的数据,希望给我们提供以下结构:
-> at t = 0s :
|-> car_1 : pd.DataFrame({})
|-> car_2 : pd.DataFrame({})
...
-> at t = 1s:
|-> car_1 : pd.DataFrame({})
|-> car_2 : pd.DataFrame({})
...
在我的例子中,我选择以嵌套字典的形式表示数据,如下所示:
global_data = {0.0: {"car_1": pd.DataFrame({"data_1":[0,0,0,0],
"data_1":[0,0,0,0] }),
"car_2": pd.DataFrame({"data_1":[0,0,0,0],
"data_1":[0,0,0,0] })},
1.0: {"car_1": pd.DataFrame({"data_1":[1,1,1,1],
"data_1":[1,1,1,1] }),
"car_2": pd.DataFrame({"data_1":[1,1,1,1],
"data_1":[1,1,1,1] })}}
但我不知道是否有更好的解决方案,因为我的目标是在一个漂亮的交互式 Jmeter 板中显示这些数据。
所以我的问题是是否有更好的解决方案来管理这些类型的数据结构?问题是,即使我搜索“高级Pandas使用教程”,我甚至不知道正确的技术词汇来找到我的问题的答案。
我希望我的问题是清楚的,你可以帮助我。先谢了。
更新:
在阅读了答案之后,我认为MultiIndex Dataframe 解决方案最适合我的需要。基于@Timeless的答案,我最终得到了以下代码:我们需要在一段时间内跟踪一组汽车的一组指标。例如,我们需要跟踪一组指标在汽车高度上随时间的演变(仅举一例)。这在代码中的翻译如下:
cars = [f"car_{i}" for i in range(1, 3)]
ts = np.arange(1, 3)
Time = [0, 1]
data = np.random.randint(0, 5, (len(ts)*len(cars)*len(Time), 5))
df = pd.DataFrame(
data,
index=pd.MultiIndex.from_product([Time, cars, ts]).set_names(['Times', 'cars', 'Height']),
columns=[f"Indicator_{i}" for i in range(1, 6)]
)
wish给出了这个:
Indicator_1 Indicator_2 Indicator_3 Indicator_4 Indicator_5
Times cars Height
0 car_1 1 4 0 3 3 3
2 1 3 2 4 0
car_2 1 0 4 2 1 0
2 1 1 0 1 4
1 car_1 1 3 0 3 0 2
2 3 0 1 3 3
car_2 1 3 0 1 1 1
2 0 2 4 3 3
为了在dataframe中找到特定的元素,我们可以使用df.query()方法:df.query("Times == 0 and cars == 'car_1'")
因此,现在我需要找到一种有效的方法来显示所有这些数据在一个交互式 Jmeter 板与选择栏的时间和汽车我会更新后,当我找到一种方法。
2条答案
按热度按时间jq6vz3qz1#
你的问题很模糊,你的数据的格式/类型也不完全清楚(* 至少对我来说 *)。更不用说我们忽略了您如何接收和存储数据。不过,根据标题,我会使用带有分层DataFrame的 MultiIndex 来操作数据,而不是使用嵌套的dict。
我们可以从 * 评论 * 中读到:
使用的输入:
wbrvyc0a2#
由于您计划查询数据集,因此我建议您使用可以轻松查询给定多个条件的数据结构。我建议使用单个DataFrame,其中每一行都是表单的一条记录
在这里,您可以使用pandas.query()函数获取新的数据框,并将其用于 Jmeter 板。
让你的数据集尽可能简单。考虑到您当前的数据结构,我不知道如何以一种高效而简单的方式查询所需的数据。
更新:
我在想一个类似的数据框