我有一个数组列表,每个数组有两个值,它们对应于excel的两列。我想知道如何检查每个数组的第二个值?
这是结构…
[['AIGSALPPMM', 'AVIVANVS'], ['DKEPBARCLA', 'DAVIDSNKC'], ['DAVKEMBDBL', 'DAVIDSNKC'], ['DAKEMJPMPB', '']]
使用这段代码,我从表中检索值并创建一个列表,该列表返回几个数组,其中包含我需要检查的这两列的值。
#Read the excel and convert to list
df = pd.read_excel('check_counterparties.xlsx', sheet_name = 'counterparties_cdwu', usecols = "A,B", skiprows=4)
dataList = df.values.tolist()
# print(dataList)
可以看到,最后一个数组的第二个值为空。
我想要的是检查每个数组的第二个值是否为空。如果是,我想返回数组中第二个空值的两个值。
知道我该怎么做吗?
main_arr = [['AIGSALPPMM', 'AVIVANVS'], ['DKEPBARCLA', 'DAVIDSNKC'], ['DAVKEMBDBL', 'DAVIDSNKC'], ['DAKEMJPMPB', '']]
for arr in main_arr:
if arr[1] == '':
print (arr)
给你:
your_list = [['AIGSALPPMM', 'AVIVANVS'], ['DKEPBARCLA', 'DAVIDSNKC'], ['DAVKEMBDBL', 'DAVIDSNKC'], ['DAKEMJPMPB', '']]
new_list = [[val[0], val[0]] if val[-1]=='' else val for val in your_list]
new_list
如果我误解了你的问题请纠正我
使用列表推导式:
lst = [['AIGSALPPMM', 'AVIVANVS'], ['DKEPBARCLA', 'DAVIDSNKC'], ['DAVKEMBDBL', 'DAVIDSNKC'], ['DAKEMJPMPB', '']]
>>> [sublist for sublist in lst if len(sublist[-1].strip())==0]
[['DAKEMJPMPB', '']]
使用布尔掩码过滤行:
df = pd.read_excel('check_counterparties.xlsx', sheet_name='counterparties_cdwu',
usecols=['A', 'B'], skiprows=4)
out = df[df['B'] == '']
输出:
# DataFrame format
>>> out
A B
3 DAKEMJPMPB
# List format
>>> out.to_dict(orient='split')['data']
[['DAKEMJPMPB', '']]