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