python – 在Pandas中,如何根据多列的组合创建一个唯一的ID?

python – 在Pandas中,如何根据多列的组合创建一个唯一的ID?,第1张

概述我有一个非常大的数据集,看起来像 df = pd.DataFrame({'B': ['john smith', 'john doe', 'adam smith', 'john doe', np.nan], 'C': ['indiana jones', 'duck mc duck', 'batman','duck mc duck',np.nan]})dfOut[173]: 我有一个非常大的数据集,看起来像

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?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1193625.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存