在Pandas DataFrame中基于部分空列生成新列并校验两列一致性
在Pandas中基于两列生成学院名称并校验ID一致性
一、生成college_name列
通过提取每行非空ID、转换格式来生成学院名称:
步骤1:构造示例数据
import pandas as pd import numpy as np df = pd.DataFrame({ 'id1': ['ID01', np.nan, 'ID07', 'ID08'], 'id2': ['ID01', 'ID03', np.nan, 'ID08'] })
步骤2:生成学院名称
# 提取每行非空的ID(id1非空则取id1,否则取id2) df['college_name'] = df[['id1', 'id2']].bfill(axis=1)['id1'] # 提取ID中的数字并拼接成College+数字格式 df['college_name'] = 'College' + df['college_name'].str.extract(r'(\d+)')[0]
执行后得到的结果如下:
id1 id2 college_name 0 ID01 ID01 College1 1 NaN ID03 College3 2 ID07 NaN College7 3 ID08 ID08 College8
二、校验ID一致性
检查是否存在同一行中id1和id2均非空且取值不同的情况:
# 筛选出id1、id2均非空且取值不同的行 conflict_rows = df[(df['id1'].notna()) & (df['id2'].notna()) & (df['id1'] != df['id2'])] if not conflict_rows.empty: print("存在冲突行:") print(conflict_rows) else: print("无冲突行:所有非空的id1和id2取值一致")
内容的提问来源于stack exchange,提问作者youtube
相关产品推荐
相关产品推荐

