我有一个数据框:
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
例如,对于 user 列,[bob, alice] 将映射到 [0,1]。目标是为数据框节省内存。
另外,是否可以指定要映射的列?例如,只映射 user 列。谢谢
请您参考如下方法:
您可以结合使用 .groupby() 和 .ngroup() 将每列中的名称替换为唯一编号。
df['user'] = df.groupby(['user']).ngroup()
df['item'] = df.groupby(['item']).ngroup()
