如何基于Type列生成连字符格式连续数字的Pandas DataFrame?
解决方案
1. 定义映射规则
先创建Type到目标区间的映射关系,两种方式可选:
# 方式一:直接映射最终字符串(适合规则固定场景) type_mapping = { 'Double': '2-3', 'Three': '4-6' } # 方式二:存储区间起止数值(适合后续规则扩展,动态生成字符串) type_range_rules = { 'Double': (2, 3), 'Three': (4, 6) }
2. 处理DataFrame
假设你已有包含Type列的DataFrame,用Pandas的map或apply快速生成目标列:
方法一:直接映射字符串
import pandas as pd # 示例原始DataFrame(包含你的序列号列) df = pd.DataFrame({ 'Serial_No': [1, 2, 3, 4], 'Type': ['Double', 'Three', 'Double', 'Three'] }) # 生成Number_Range列 df['Number_Range'] = df['Type'].map(type_mapping)
方法二:动态生成区间字符串
如果后续需要调整区间规则,只需修改起止数值即可:
df['Number_Range'] = df['Type'].apply(lambda x: f"{type_range_rules[x][0]}-{type_range_rules[x][1]}")
3. 处理异常情况
如果Type列存在未定义的取值,用fillna填充默认值:
df['Number_Range'] = df['Type'].map(type_mapping).fillna('未定义')
最终结果示例
处理后的DataFrame结构如下:
| Serial_No | Type | Number_Range |
|---|---|---|
| 1 | Double | 2-3 |
| 2 | Three | 4-6 |
| 3 | Double | 2-3 |
| 4 | Three | 4-6 |
内容的提问来源于stack exchange,提问作者ashnaa1610
相关产品推荐
相关产品推荐

