代码
list_ZFI077 = df_1.columns.tolist()
df_ZFI077 = df_1.columns.to_frame(name= "列名") # 先不重置索引 drop依据索引
df_ZFI077_1 = df_ZFI077.copy().reset_index(drop= True) # index.to_frame()后需重置索引 方便赋值
for i,j in enumerate(list_ZFI077):
if df_ZFI077.列名.drop(j).str.contains(j).any():
df_ZFI077_1.loc[i,"列名"] = j + "th"
df_ZFI077_1.列名.str.contains("/").to_frame("判断").join(df_ZFI077).query("判断")
seri_ZFI077 = df_ZFI077_1.列名.str.replace("/", "")
'''检查'''
if seri_ZFI077.str.contains("/").any() == False: # 不能 is False
print("无'/'")
dict_ZFI077 = {}
for j in seri_ZFI077: # 若使用list_ZFI077需替换"/" 即 [ i.replace("/", "") for i in list_ZFI077 ] 或参考 https://blog.51cto.com/u_14246112/3140471
if seri_ZFI077.drop(
index= seri_ZFI077.to_frame("列名").query("列名 == @j").index
).str.contains(j).any():
print(j)
else:
dict_ZFI077[j] = "无重复"
if set(dict_ZFI077.values()) == set(["无重复"]): # 不能写 set("无重复") 会将字符串拆成单个字符
print("无重复")
背景
# 问题4 关键词有重复部分 例如 '采购入库数量' '无采购入库数量'
# 解决4.1 函数改进
# 解决4.2 源数据调整
# 思路4.2.1 将重复的识别出来
# 思路4.2.2 将重复的修改命名
# 4.2.2.1 列标题替换 Series.replace
# 4.2.2.2 长字符串内替换 Series.str.replace
# 4.2.2.2.1 单个字符串
# 4.2.2.2.2 +组合字符串
# 4.2.2.2.2.1 +可能在前可能在后 避免重复替换 新方法
# 4.3 特殊性大于通用性时 特殊做法
# 问题5 '/'替换为''
相关笔记 重要性从大到小顺序
https://blog.51cto.com/u_16055028/6316988
https://blog.51cto.com/u_16055028/6317062
https://blog.51cto.com/u_16055028/6309992
https://blog.51cto.com/u_16055028/6317193
标签:关键词,4.2,df,列名,ZFI077,str,cto,合集,替换 From: https://blog.51cto.com/u_16055028/6354522