我正在用熊猫从excel文件中得到一个列表。
start_path = r'C:\scratch\\'
File = 'test.xlsx'
import pandas as pd
mylist = []
df = pd.read_excel(start_path + File, sheet_name='GIS')
mylist = df['Column A'].tolist()列表:
mylist = ['LB-52/LP-7', 'LB-53/LI-5', 'LB-54/LP-8', 'LB-55', 'LB-56', 'ABC']我的目标是从这个列表中创建一个新的列表,只使用以LB开头的元素。因此,新的清单将是:
newlist = ['LB-52/LP-7', 'LB-53/LI-5', 'LB-54/LP-8', 'LB-55', 'LB-56']或者从列表中删除不以“LB”开头的所有元素(从而从列表中删除ABC )。
newlist = [str(x for x in mylist if "LB" in x)]我试过了上面的话,这个就吐出来了:
['<generator object <genexpr> at 0x0000024B5B8F62C8>']我还尝试了以下几点:
approved = ['LB']
mylist[:] = [str(x for x in mylist if any(sub in x for sub in approved))]这将获得与前面相同的生成器对象消息。
我觉得这很简单,但我想不出来。
发布于 2022-05-11 22:46:03
您可以在列表理解中使用str.startswith:
mylist = ["LB-52/LP-7", "LB-53/LI-5", "LB-54/LP-8", "LB-55", "LB-56", "ABC"]
newlist = [value for value in mylist if value.startswith("LB")]
print(newlist)指纹:
['LB-52/LP-7', 'LB-53/LI-5', 'LB-54/LP-8', 'LB-55', 'LB-56']您可以在str()中删除newlist = [str(x for x in mylist if "LB" in x)],但这会留下xxxLBxxx (LB在字符串中)等值。
发布于 2022-05-11 22:48:12
newlist = [x for x in mylist if x[0:2]=="LB"]您还可以使用切片,也可以使用切片检查所需的索引。
发布于 2022-05-11 22:52:45
一般来说,熊猫比蟒蛇做同样的工作要快。因此,在“移到”到python之前,您应该尝试在熊猫中完成大部分的计算或过滤。
mylist = df.loc[df['Column A'].str.startswith("LB"), 'Column A'].tolist()
mylist
>>> ['LB-52/LP-7', 'LB-53/LI-5', 'LB-54/LP-8', 'LB-55', 'LB-56']https://stackoverflow.com/questions/72208351
复制相似问题