【发布时间】:2023-01-13 01:16:35
【问题描述】:
我得到了一个非常大的字典,格式如下,我不确定如何将其转换为可用于执行基本功能的数据框。
{
'hash': {
'ids': [List of Unique IDs of records this hash has been seen in],
'weights': [List of weights],
'values': [List of values],
'measure_dates': [List of dates]
}
}
ids、weights、values和measure_dates中的项数在hash中是相同的。不过,不同的hashes 可以有不同数量的项目。这取决于进行测量的频率。
三个记录示例的真实(ish)数据:
{
'IRR-99876-UTY': {
'ids': [9912234, 9912237, 45555889],
'weights': [0.09, 0.09, 0.113],
'values': [2.31220, 2.31219, 2.73944],
'measure_dates': ['2021-10-14', '2021-10-15', '2022-12-17']
},
'IRR-10881-CKZ': {
'ids': [45557231],
'weights': [0.31],
'values': [5.221001],
'measure_dates': ['2022-12-31']
},
'IRR-881-CKZ': {
'ids': [24661, 24662, 29431],
'weights': [0.05, 0.07, 0.105],
'values': [3.254, 4.500001, 7.3221],
'measure_dates': ['2018-05-05', '2018-05-06', '2018-07-01']
}
}
索引中的值对应于进行的相同测量。例如在IRR-881-CKZ 中,有 3 个测量值。
- 测量 1 于 2018-05-05 进行,id
24661,weight0.05,value3.254 - 2018-05-06 测量 2,id
24662,weight0.07,value4.500001 - 测量 3 于 2018-07-01 进行,id
29431,权重0.105和值7.3221
没有其他索引组合对此散列有效。
我将尝试获取数据的信息:
- 最常测量哪些哈希。这可以通过
ids列表中的项目数量最多来确定。在此示例中,第一条和第三条记录包含三个项目,因此将是最靠前的结果。我希望能够使用nlargest()或sort_values().head()之类的东西来获取它,而不是解析每条记录并计算项目的数量。 - 哪些散列具有两个值之间的平均值。如果我有一定数量的列,我想我可以做类似
df['average'] = df[['value1', 'value2']].mean(axis=1)的事情,但是对于可变数量的值我不确定如何做到这一点。
如何将这个列表字典的字典转换为可用的数据框?
【问题讨论】:
-
df = pd.DataFrame.from_dict(my_dict).T创建可用的 df。 -
@SomeDude
.T在这里做什么而 Lasse 下面的回答没有? -
.T 是转置。