我有一个像这样的pandas数据框:
Copy sequence type ntv
1 1 A 0.45
1 1 R2 0.878
1 1 R3 1.234
1 2 A -7.890
1 2 R2 2.345
1 2 R3 -0.871
2 1 A -0.098
2 1 R2 -0.007
2 1 R3 9.089
2 2 A 1.567
2 2 R2 -0.764
2 2 R3 17.908
3 1 A 4.980
3 1 R2 2.34
3 1 R3 1.280
3 2 A -9.189
3 2 R2 -7.09
3 2 R3 -0.009
数据框由第3列中的3个副本组成。这些副本中的每一个都包含相同的元素,即它们各有2个序列,它们又由3种不同的类型组成:A,R2和R3。
如何创建字典字典的字典,如下所示:
d1 = {sequence:{type:{Copy:ntv}}}
例如,如果我说:
d2 = d1[1][‘R2’]
rank = sorted(d2.items(), key =operator.itemgetter(1))
pprint(rank)
它应打印出一个字典(如下所示),其中所有ntv值已经排序,表明哪个拷贝号具有R2类型序列1的最低或最高ntv值。
{2: -0.007,
1: 0.878,
3: 2.34}
此外,如果您对如何解决问题有更好的想法,我期待您的建议。提前致谢!
答案 0 :(得分:3)
你可以使用collections.defaultdict
:
<Modal isVisible={this.state.showPopupModal} onBackdropPress={() => this.hideModal()} >
..
</Modal>
答案 1 :(得分:0)
首先,制作字典
df_dict = dict(zip(df.sequence, df.ntv))
然后对df_dict进行排序
sorted_x = sorted(df_dict.items(), key=operator.itemgetter(1))