合并两列以在pd数据框中生成索引

时间:2020-02-14 14:39:11

标签: python pandas dataframe

首先,请原谅是否已被询问和回答。 我看过herehere,浏览了推荐重复的标题并尝试使用搜索引擎,但是似乎找不到正确的关键字。

问题

我的问题如下:给定一个具有两个“标识符”列的数据框,我想创建一个索引,该索引唯一地描述两列中值的每种组合:

例如:列'a'的值为0,列'b'的值为'0',它的索引号应为1。相同的组合应映射到相同的值。

方法

df = pd.DataFrame({
    'a': np.random.randint(0,3,10),
    'b': np.random.randint(0,3,10),
    'c': np.random.randint(0,10,10)
})

mapping = [(*key, i+1) for i, key in enumerate(df.groupby(by=['a', 'b']).groups.keys())]
crutch = pd.DataFrame(mapping, columns=['a', 'b', 'new_index'])
df = df.merge(crutch, left_on=['a', 'b'], right_on=['a', 'b'])

这行得通,但似乎熊猫中应该内置了一些我想念的东西。

问题

那么,熊猫中内置有什么可以帮助我的东西吗?

谢谢

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

IIUC,groupby.ngroup

df['new_index'] = df.groupby(['a','b']).ngroup().add(1)
print(df)
   a  b  c  new_index
0  2  1  4          6
1  1  1  5          3
2  1  1  8          3
3  1  1  2          3
4  2  2  8          7
5  2  2  5          7
6  2  0  8          5
7  0  1  7          1
8  1  2  5          4
9  0  2  5          2