如何根据条件对熊猫数据框的行值进行排序?

什里

我有以下数据框

df = pd.DataFrame([['1','aa', 'fff'], ['1', 'aa', 'ggg'], ['1', 'aa', 'eee'],
           ['2','aa', 'eee'], ['2', 'aa', 'ggg'], ['2', 'aa', 'fff'],
           ['3','bb', 'hhh'], ['3', 'bb', 'mmm'], ['3', 'bb', 'kkk'],
           ['3', 'bb', 'jjj'], ['4','bb', 'kkk'], ['4', 'bb', 'mmm'],
           ['4', 'bb', 'hhh'], ['4', 'bb', 'jjj'], ['5','aa', 'ggg'],
           ['5', 'aa', 'eee'], ['5', 'aa', 'fff']], columns=['foo', 'bar','name_input'])

现在,我需要根据条件对“名称输入”列中的值进行排序。条件是

  • 对于bar == aa,则行值== ['eee','fff','ggg'];对于bar == bb,则行值== [[hhh','jjj','kkk',' mmm']

最后,我的目标是输出以下内容

df = pd.DataFrame([['1','aa', 'eee'], ['1', 'aa', 'fff'], ['1', 'aa', 'ggg'],
           ['2','aa', 'eee'], ['2', 'aa', 'fff'], ['2', 'aa', 'ggg'],
           ['3','bb', 'hhh'], ['3', 'bb', 'jjj'], ['3', 'bb', 'kkk'],
           ['3', 'bb', 'mmm'], ['4','bb', 'hhh'], ['4', 'bb', 'jjj'],
           ['4', 'bb', 'kkk'], ['4', 'bb', 'mmm'], ['5','aa', 'eee'],
           ['5', 'aa', 'fff'], ['5', 'aa', 'ggg']], columns=['foo', 'bar','name_input'])

我尝试按行重新排序索引。但是,它似乎不起作用。

df = df.pivot(index="foo", columns="bar", values="name_input")

任何帮助深表感谢!

ky

据我了解,您可能希望进行分组,然后将所需的(要排序的)列转换为categorical,然后sort_values

d = {'aa':['eee', 'fff', 'ggg'],'bb':['hhh' ,'jjj', 'kkk','mmm']} #dict of the conditions

final = pd.concat(g.reset_index().assign(name_input = 
            pd.Categorical(g.reset_index()['name_input'],d.get(i),ordered=True))
           .sort_values('name_input') for i,g in 
           df.set_index('name_input').groupby(['foo','bar'])).reindex(df.columns,axis=1)

  foo bar name_input
2   1  aa        eee
0   1  aa        fff
1   1  aa        ggg
0   2  aa        eee
2   2  aa        fff
1   2  aa        ggg
0   3  bb        hhh
3   3  bb        jjj
2   3  bb        kkk
1   3  bb        mmm
2   4  bb        hhh
3   4  bb        jjj
0   4  bb        kkk
1   4  bb        mmm
1   5  aa        eee
2   5  aa        fff
0   5  aa        ggg

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何根据行对熊猫数据框进行排序?

如何对熊猫数据框中的某些行的值进行排序?

如何根据不在数据框中使用 if 条件的值对 14 列进行排序,而不是按行排序?

根据特定值的顺序对熊猫数据框进行排序

根据分类列的值对熊猫数据框进行排序

根据列表对熊猫数据框进行排序

如何根据条件对数据框的名称进行排序

如何对熊猫数据框中的值进行排序?

如何根据条件为熊猫数据框中的行组分配唯一值?

如何根据条件行值取消堆叠或取消旋转熊猫数据框?

如何根据条件在熊猫数据框的多列上分配值

如何根据条件替换熊猫数据框中的值?

根据条件对熊猫数据框进行分组?

如何根据值对熊猫数据框的列进行分类?

如何对熊猫数据框中的行子集进行排序

如何对熊猫数据框的一行进行排序

如何按行的长度对熊猫数据框进行排序

熊猫根据条件替换数据框值

根据条件修改熊猫数据框值

熊猫| 根据条件复制数据框值

根据条件熊猫过滤数据框行

根据条件移动熊猫数据框的行

根据另一个数据框值对熊猫值进行排序

熊猫groupby对每个组值进行排序,并根据每个组的最大值对数据框组进行排序

如何根据条件过滤熊猫数据框?

根据列对熊猫数据框数据进行排列/排序

根据字符串值列对熊猫数据框行进行排序

根据单个单元格中的多个值对熊猫数据框进行排序

对熊猫数据框进行分组并根据条件进行验证