如何向列表中每个字符串追加字符X?Pandas处理Excel遇问题
解决给列表每个字符串末尾添加'X'的问题
首先,咱们先定位问题出在哪:你写的keylist += 'X'并不是给列表里每个字符串末尾加'X',而是把字符串'X'拆成单个字符(这里就是一个'X'),作为新元素追加到列表末尾——这显然不是你想要的效果。
最优解决方案:生成字符串时直接添加'X'
既然你是在循环里生成每个拼接后的字符串,那最省事的办法就是在生成的时候直接把'X'加上,不用事后再处理列表:
import pandas as pd df = pd.read_excel('file.xlsx', usecols = 'A,B,C') print(df) keylist = [] list1, list2, list3 = df['A'].tolist(), df['B'].tolist(), df['C'].tolist() for i in zip(list1, list2, list3): val = map(str, i) # 这里直接在join后的字符串末尾加'X' keylist.append('/'.join(val) + 'X') print(keylist)
备选方案:事后批量给列表元素加'X'
如果已经生成了不带'X'的keylist,想要批量修改,可以用列表推导式(这是Python里处理这类问题最常用也最清晰的方式):
# 替换原来的keylist += 'X' keylist = [item + 'X' for item in keylist]
或者用map函数配合匿名函数:
keylist = list(map(lambda x: x + 'X', keylist))
额外优化:简化你的代码
其实你可以不用单独把每列转成列表再zip,直接遍历DataFrame的行更简洁:
keylist = [] for _, row in df.iterrows(): # 把每行的三个列转成字符串后拼接,再加'X' combined = '/'.join(map(str, row)) + 'X' keylist.append(combined)
甚至可以用一行列表推导式搞定整个逻辑:
keylist = ['/'.join(map(str, row)) + 'X' for _, row in df.iterrows()]
这样代码更紧凑,也更符合pandas的使用习惯。
内容的提问来源于stack exchange,提问作者Artur Müller Romanov
相关产品推荐
相关产品推荐

