Python 在pandas中对列值进行排序

Python 在pandas中对列值进行排序,python,pandas,Python,Pandas,在下面的数据框中,在每一行中,我希望name1value是name1和name2中较小的值 data = {'name1': ['Jason', 'Molly', 'Tina', 'yuma', 'Amy'], 'name2': ['Cochice', 'Pima', 'Santa', 'Maria', 'Yuma'], 'val': [12, 22, 4, 9, 7], 'db' : ['xx','yy', 'zz', 'mm', 'aa']}

在下面的数据框中,在每一行中,我希望
name1
value是
name1
name2
中较小的值

data = {'name1': ['Jason', 'Molly', 'Tina', 'yuma', 'Amy'],
        'name2': ['Cochice', 'Pima', 'Santa', 'Maria', 'Yuma'],
        'val': [12, 22, 4, 9, 7],
        'db' : ['xx','yy', 'zz', 'mm', 'aa']}
df = DataFrame(data)
df


db  name1   name2   val
xx  Jason   Cochice 12
yy  Molly   Pima    22
zz  Tina    Santa   4
mm  yuma    Maria   9
aa  Amy Yuma    7
据我所知,排序只能按行进行。如何以这种方式排列值

预期产出为:

db  name1   name2   val
xx  Cochice Jason   12
yy  Molly   Pima    22
zz  Santa   Tina    4
mm  Amy     Maricopa    9
aa  Amy     Yuma    7

您可以将
应用
排序
一起使用,但首先和最后:

np.sort
类似的解决方案:

print (df.set_index('val').apply(np.sort, axis=1).reset_index())
   val    name1  name2
0    2  Cochice  Jason
1    2    Molly   Pima
2    3    Santa   Tina
3    3      Amy  Maria
4    3      Amy   Yuma
如果多列使用
子集

df[['name1','name2']] = df[['name1','name2']].apply(np.sort, axis=1)
print (df)
   db    name1  name2  val
0  xx  Cochice  Jason    2
1  yy    Molly   Pima    2
2  zz    Santa   Tina    3
3  mm      Amy  Maria    3
4  aa      Amy   Yuma    3

作品完美,但我想我不是很清楚。我还有其他专栏。我只需要对
name1
name2
执行此操作,以保持所有其他列不变。改变了计划
df[['name1','name2']] = df[['name1','name2']].apply(np.sort, axis=1)
print (df)
   db    name1  name2  val
0  xx  Cochice  Jason    2
1  yy    Molly   Pima    2
2  zz    Santa   Tina    3
3  mm      Amy  Maria    3
4  aa      Amy   Yuma    3