df = pd.DataFrame({'B': ['john smith','john doe','adam smith',np.nan],'C': ['indiana jones','duck mc duck','batman',np.nan]})dfOut[173]: B C0 john smith indiana jones1 john doe duck mc duck2 adam smith batman3 john doe duck mc duck4 NaN NaN
我需要创建一个ID变量,这对于每个B-C组合都是唯一的.也就是说,输出应该是
B C ID0 john smith indiana jones 11 john doe duck mc duck 22 adam smith batman 33 john doe duck mc duck 2 4 NaN NaN 0
我实际上不关心索引是否从零开始,以及缺失列的值是0还是任何其他数字.我只是想要一些快速的东西,它不会占用大量内存并且可以快速排序.
我用:
df['combined_ID']=(df.B+df.C).rank(method='dense')
但输出是float64并占用大量内存.我们可以做得更好吗?
谢谢!
factorize
: df['combined_ID'] = pd.factorize(df.B+df.C)[0]print df B C combined_ID0 john smith indiana jones 01 john doe duck mc duck 12 adam smith batman 23 john doe duck mc duck 14 NaN NaN -1总结
以上是内存溢出为你收集整理的python – 在Pandas中,如何根据多列的组合创建一个唯一的ID?全部内容,希望文章能够帮你解决python – 在Pandas中,如何根据多列的组合创建一个唯一的ID?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)