作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我有以下 DataFrame:
df = pd.DataFrame({"my_col": ["one","two","two","one","two","one","one"]})
my_col
0 one
1 two
2 two
3 one
4 two
5 one
6 one
我想在重复值上附加一个字符串及其重复计数。这就是我的意思:
my_col
0 one_0
1 two_0
2 two_1
3 one_1
4 two_2
5 one_2
6 one_3
我知道我可以做类似 df.groupby('my_col').apply(my_function_to_do_this) 的事情:
def my_function_to_do_this(group: pd.DataFrame) -> pd.DataFrame:
str_to_append = pd.Series(range(group.shape[0]), index=group.index).astype(str)
group["my_col"] += "_" + str_to_append
return group
但是对于包含许多最多 4 行的小组的大型 DataFrame 来说,这非常慢。
如果有的话,我正在努力寻找一种更快的方法。
非常感谢您的帮助!
最佳答案
使用GroupBy.cumcount
对于计数器,转换为字符串并添加到原始 Series.str.cat
:
df['my_col'] = df['my_col'].str.cat(df.groupby('my_col').cumcount().astype(str), sep='_')
print (df)
my_col
0 one_0
1 two_0
2 two_1
3 one_1
4 two_2
5 one_2
6 one_3
或通过+
加入:
df['my_col'] += '_' + df.groupby('my_col').cumcount().astype(str)
#longer version
#df['my_col'] = df['my_col'] + '_' + df.groupby('my_col').cumcount().astype(str)
关于python - 识别重复值并向其附加唯一字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63990400/
我是一名优秀的程序员,十分优秀!