如何基于Pandas DataFrame中的X列自动生成对应Y列?
问题
现有如下Pandas DataFrame数据:
import pandas as pd df = pd.DataFrame({ 'brand': ['Yum Yum', 'Yum Yum', 'Indomie', 'Indomie', 'Indomie'], 'X1': [7,7,7,7,9], 'X2': [8,9,7,5,6], }) print(df)
需求:识别数据中所有以X开头的列,基于这些列自动生成对应的Y列。例如现有X1、X2列,则生成Y1(值全为1)、Y2(值全为2)列;若有X1、X2、X3列,则生成Y1=1、Y2=2、Y3=3的列,期望结果如下:
df2 = pd.DataFrame({ 'brand': ['Yum Yum', 'Yum Yum', 'Indomie', 'Indomie', 'Indomie'], 'X1': [7,7,7,7,9], 'X2': [8,9,7,5,6], 'Y1': [1,1,1,1,1], 'Y2': [2,2,2,2,2], }) print(df2)
请问如何实现该需求?
解决方案
可以通过以下步骤自动实现需求:
- 筛选目标列:先找出所有以
X开头的列 - 生成对应Y列:遍历每个X列,提取列名后的数字,创建同名前缀为
Y的列,并填充对应数字值
代码实现
import pandas as pd df = pd.DataFrame({ 'brand': ['Yum Yum', 'Yum Yum', 'Indomie', 'Indomie', 'Indomie'], 'X1': [7,7,7,7,9], 'X2': [8,9,7,5,6], }) # 筛选所有以X开头的列 x_columns = [col for col in df.columns if col.startswith('X')] # 遍历生成Y列 for col in x_columns: # 提取列名中的数字部分(如X1提取1) num = col[1:] # 创建Y列并赋值对应数字 df[f'Y{num}'] = int(num) print(df)
说明
- 代码会自动识别所有以
X开头的列,不管是X1、X2还是Xn,都能生成对应的Y列 - 无需手动指定列名,完全基于现有数据自动处理,扩展性强
内容的提问来源于stack exchange,提问作者Ahmed
相关产品推荐
相关产品推荐

