如何在熊猫系列字符串中添加顺序后缀以匹配字符串

时间:2019-05-15 17:45:17

标签: python pandas

我想创建一个新列,将连续的数字后缀附加到匹配的值上。

如果我从以下内容开始...

d = {'item': ['A', 'A', 'B', 'C', 'C', 'A'],
     'year': [2019, 2019, 2019, 2019, 2020, 2020]}
df0 = pd.DataFrame(d)
    item    year
0   A       2019
1   A       2019
2   B       2019
3   C       2019
4   C       2020
5   A       2020

我想要这个中间步骤,

    item    item_number year
0   A       1           2019
1   A       2           2019
2   B       1           2019
3   C       1           2019
4   C       2           2020
5   A       3           2020

然后填写此最终表格。

    numbered_item   item    year
0   A 1             A       2019
1   A 2             A       2019
2   B 1             B       2019
3   C 1             C       2019
4   C 2             C       2020
5   A 3             A       2020

2 个答案:

答案 0 :(得分:2)

使用df.insert()将列插入特定的位置并使用df.groupby().cumcount()

df0.insert(0,'numbered_item',df0.item+df0.groupby('item').cumcount().add(1).astype(str))
print(df0)

  numbered_item item  year
0            A1    A  2019
1            A2    A  2019
2            B1    B  2019
3            C1    C  2019
4            C2    C  2020
5            A3    A  2020

答案 1 :(得分:0)

尝试:

df0['item_number'] = df0.groupby('item').cumcount()+1

df0['numbered_item'] = df0['item'].astype(str) + ' ' + df0['item_number'].astype(str)

输出:

item    year    item_number numbered_item
0   A   2019    1           A 1
1   A   2019    2           A 2
2   B   2019    1           B 1
3   C   2019    1           C 1
4   C   2020    2           C 2
5   A   2020    3           A 3