我已经提供了一个非常大的字典与以下格式,我不知道如何转换成一个 Dataframe ,我可以用来执行基本功能。
{
'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]
}
}
hash
中ids
、weights
、values
和measure_dates
中的项目数是相同的。但是不同的hash
可以有不同的项目数。这取决于测量的频率。
三个记录示例的真实的(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年5月5日进行,ID为
24661
,重量为0.05
,值为3.254
- 测量2于2018年5月6日进行,ID为
24662
,重量为0.07
,数值为4.500001
- 测量3于2018年7月1日进行,ID为
29431
,重量为0.105
,数值为7.3221
没有其他索引组合对此哈希有效。
我将尝试获取数据的信息:
- 哪些哈希值最常被测量。这可以通过
ids
列表中哪些项的数量最多来确定。在本例中,第一条和第三条记录有三个项,因此将是顶部结果。我希望能够使用nlargest()
或sort_values().head()
之类的东西来获得此结果,而不是解析每条记录并计算项的数量。 - 哪个哈希值的平均值在两个值之间,如果我有一个固定的列数,我想我可以做一些类似
df['average'] = df[['value1', 'value2']].mean(axis=1)
的事情,但是对于一个可变的值数,我不知道该怎么做。
我怎样才能把这个字典的字典的列表转换成一个可用的 Dataframe ?
2条答案
按热度按时间oxcyiej71#
您可以在panda中使用
.from_dict()
将其转换为 Dataframe 。mqkwyuun2#
您需要将此字典的每个条目转换为自己的DataFrame,并将它们连接起来,以便有效地处理此数据:
创建可用的数据框
既然我们的数据已经清理完毕,我们可以解决您的问题。
解决你的问题
1.最常测量哪些哈希
Series.value_counts
操作,但是由于我们感兴趣的数据当前在索引中,我们需要先使用Index.get_level_values
将其抓取出来。1.这些散列具有两个值之间的平均值。
Series.between
方法来检查两个任意值之间是否存在这些平均值。