示例数据如下:
import pandas as pd
import numpy as np
d=pd.DataFrame({'lender':['tony','wood','tony','tidy'],
'borrower':['wood','tony','wood','tony']})
我想要连接lender
和borrower
,最重要的是在每一行中对它们进行排序。一言以蔽之,我想得到P:
排序原则与默认的sorted
函数相同。例如:
sorted(['tony','wood'])
Out[221]: ['tony', 'wood']
sorted(['wood','tony'])
Out[222]: ['tony', 'wood']
除非必须使用for循环,否则最好使用apply
。请在复制我的问题之前仔细阅读!
发布于 2019-03-14 16:17:21
一种解决方案是对每行使用带排序和join
的apply
:
d['p'] = d[['lender','borrower']].apply(lambda x: '_'.join(sorted(x)), axis=1)
print (d)
lender borrower p
0 tony wood tony_wood
1 wood tony tony_wood
2 tony wood tony_wood
3 tidy tony tidy_tony
或者使用带有DataFrame
构造函数的numpy.sort
是很重要的:
d1 = pd.DataFrame(np.sort(d[['lender','borrower']], axis=1))
d['p'] = d1[0] + '_' + d1[1]
print (d)
lender borrower p
0 tony wood tony_wood
1 wood tony tony_wood
2 tony wood tony_wood
3 tidy tony tidy_tony
https://stackoverflow.com/questions/55157520
复制相似问题