我在玩耍,试图学习熊猫。目前停留在某一点,
数据-
A B C
---------------------------
1 1 1
1 1 2
1 1 3
2 1 3
2 1 1
2 1 2
1 2 2
1 2 1
1 2 3
我的预期输出是
A B C
---------------------------
1 1 1
1 1 2
1 1 3
2 1 1
2 1 2
2 1 3
1 2 1
1 2 2
1 2 3
原始数据与其他列相比看起来要复杂得多。这只是简化了该数据的版本。 因此,基本上我想要对Col C的数据进行排序,以获取(Col A和B)的组合唯一键。
当前我要做的是
contentIDs = data.B.unique()
for iD in contentIDs:
slots = data[data.B == iD].A.unique()
for s in slots:
slotData = data[(data.A == s) & (data.B == iD)]
sortedData = slotData.sort_values(['A', 'B', 'C'])
#Loop throug data to get to the index of sorted data and then replace unsorted data with sorted data.
我认为可能会有更好的方法。因此,在继续执行循环逻辑之前,请先在这里询问是否有更好的方法。做这样简单的事情看起来很糟糕。
欢迎任何建议或指点。如有任何混淆,请随时发表评论。
答案 0 :(得分:1)
df.groupby(['A','B'],sort=False)['C'].apply(lambda x:x.sort_values()).reset_index(level=['A','B'])
A B C
0 1 1 1
1 1 1 2
2 1 1 3
4 2 1 1
5 2 1 2
3 2 1 3
7 1 2 1
6 1 2 2
8 1 2 3
答案 1 :(得分:1)
IIUC
df.sort_values(['B','A','C'])
A B C
0 1 1 1
1 1 1 2
2 1 1 3
4 2 1 1
5 2 1 2
3 2 1 3
7 1 2 1
6 1 2 2
8 1 2 3