我有一个数据框q
,它由药物和剂型索引。我注意到,当数据帧未排序时,数据框在两个不同的位置显示相同的索引plavix
。我可以通过将.sort_index()
添加到q
的末尾来解决此问题(请参阅输出1)。我有两个问题:(1)有没有更好的方法来实现输出1; (2)我如何实现下面的输出2。感谢。
q = pd.DataFrame(np.array([1,2,3,4]), index=[pd.Series(['plavix', 'warfarin',
'plavix', 'plavix'], index=[0,1,2,3]), pd.Series(['tab',
'inj', 'cap', 'tab'], index=[0,1,2,3])], columns=['app_num'])
输出:
app_num
plavix tab 1
warfarin inj 2
plavix cap 3
tab 4
输出1:
app_num
warfarin inj 2
plavix cap 3
tab 1
tab 4
输出2:
app_num
warfarin inj 2
plavix cap 3
tab 1
4
答案 0 :(得分:2)
对于输出1,您需要一个简单的sort_index
。
q.sort_index(level=0, ascending=False)
app_num
warfarin inj 2
plavix tab 1
tab 4
cap 3
对于输出2,您需要在排序索引之前附加额外的级别。
q.set_index(
q.groupby(level=[0, 1]).cumcount(), append=True
).sort_index(level=[0, 1], ascending=[False, True])
app_num
warfarin inj 0 2
plavix cap 0 3
tab 0 1
1 4