如何用Python将DataFrame中Choices列的J/N替换为对应解释
问题描述
在Python的DataFrame中,Choices列每行存储着以逗号分隔的J/N序列(如J,N,N,J)。需按序列位置为每个J/N映射对应文本:
- 第1位:J→New address、N→Old address
- 第2位:J→New car、N→Old car
- 第3位:J→New city、N→Old city
- 第4位:J→New area、N→Old area
最终生成Explanation列,输入输出示例如下:
输入表格
| Name | Choices |
|---|---|
| Henk | J,N,N,J |
| Tom | N,J,N,N |
| Tim | J,N,J,J |
输出表格
| Name | Choices | Explanation |
|---|---|---|
| Henk | J,N,N,J | New address, Old car, Old city, New area |
| Tom | N,J,N,N | Old address, New car, Old city, Old area |
| Tim | J,N,J,J | New address, Old car, New city, New area |
解决方案
这里提供两种实用的实现方式,可根据数据量和需求选择:
方法一:自定义映射+apply函数(直观易维护)
先定义好每个位置的映射规则,再通过apply逐行处理Choices列,完成映射后拼接成目标文本:
import pandas as pd # 构造示例数据 df = pd.DataFrame({ 'Name': ['Henk', 'Tom', 'Tim'], 'Choices': ['J,N,N,J', 'N,J,N,N', 'J,N,J,J'] }) # 按位置定义映射规则,索引0对应第1位,以此类推 position_mappings = [ {'J': 'New address', 'N': 'Old address'}, {'J': 'New car', 'N': 'Old car'}, {'J': 'New city', 'N': 'Old city'}, {'J': 'New area', 'N': 'Old area'} ] # 定义处理单条Choices的函数 def get_explanation(choice_str): # 拆分逗号分隔的序列 choices = choice_str.split(',') # 按位置匹配映射文本,再拼接成字符串 return ', '.join([position_mappings[i][c] for i, c in enumerate(choices)]) # 生成Explanation列 df['Explanation'] = df['Choices'].apply(get_explanation) # 查看结果 print(df)
这种方式逻辑清晰,后续若要调整映射规则或增加位置,直接修改position_mappings列表即可,适合中小规模数据。
方法二:向量化拆分+替换(高效处理大数据)
利用pandas的向量化操作,先拆分Choices为多列,分别替换后再拼接,避免循环,处理大数据集时效率更高:
import pandas as pd df = pd.DataFrame({ 'Name': ['Henk', 'Tom', 'Tim'], 'Choices': ['J,N,N,J', 'N,J,N,N', 'J,N,J,J'] }) # 将Choices列拆分为4个独立列 split_df = df['Choices'].str.split(',', expand=True) # 对每列分别执行映射替换 split_df[0] = split_df[0].map({'J': 'New address', 'N': 'Old address'}) split_df[1] = split_df[1].map({'J': 'New car', 'N': 'Old car'}) split_df[2] = split_df[2].map({'J': 'New city', 'N': 'Old city'}) split_df[3] = split_df[3].map({'J': 'New area', 'N': 'Old area'}) # 拼接所有列的内容为Explanation列 df['Explanation'] = split_df.apply(', '.join, axis=1) # 查看结果 print(df)
内容的提问来源于stack exchange,提问作者Datawoman
相关产品推荐
相关产品推荐

