使用Pandas为DataFrame中同code生成递增文件名
解决方法
可以用Pandas的分组和字符串处理实现需求,步骤如下:
- 提取文件后缀:从原
name列中拆分出文件后缀(即最后一个.后的部分) - 生成组内递增序号:按
code分组后,为每组内的行生成从1开始的递增序号 - 拼接新文件名:将序号与后缀拼接,替换原
name列
完整代码示例
import pandas as pd # 构建原始DataFrame df = pd.DataFrame({ 'name': ['fa.st.pdf', 'creed.txt', 'logs.log', 'log.s.txt', 'foo.bar'], 'code': [10, 10, 11, 11, 11] }) # 提取后缀 df['suffix'] = df['name'].str.split('.').str[-1] # 生成组内递增序号(从1开始) df['seq'] = df.groupby('code').cumcount() + 1 # 拼接新文件名并替换原name列 df['name'] = df['seq'].astype(str) + '.' + df['suffix'] # 移除临时列 df = df.drop(['suffix', 'seq'], axis=1) print(df)
输出结果
name code 0 1.pdf 10 1 2.txt 10 2 1.log 11 3 2.txt 11 4 3.bar 11
内容的提问来源于stack exchange,提问作者alex_T
相关产品推荐
相关产品推荐

