我有一个数据框:
import pandas as pd
d = {'user': ['bob','alice','bob'], 'item':
['apple','coconut','pear']}
df = pd.DataFrame(data=d)
user item
0 bob apple
1 alice coconut
2 bob pear
我的目标是将每一列中的每个字符串映射到一个递增的ID(从0开始),如下所示:
user item
0 0 0
1 1 1
2 0 2
例如,对于column user
,[bob, alice]
将映射到[0,1]
。目标是为数据帧节省内存。
此外,是否可以指定要映射的列?例如,仅映射user
列。谢谢
您可以使用的组合.groupby()
,并.ngroup()
用一个唯一的编号来代替在每一列的名称。
df['user'] = df.groupby(['user']).ngroup()
df['item'] = df.groupby(['item']).ngroup()
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句