Если у меня есть список кортежей и другой список, для которого кортежи должны быть условными:
my_list=['a','e']
my_list1= ['a','b','a','c','b','d','e','f','a','h']
v=[data for data in zip(my_list1,my_list1[1::1])]
del v[1::2]
теперь, чтобы сохранить только те кортежи, которые содержат элементы из my_list, который я использую
v = [tup for tup in v if any(c in my_list for c in tup)]
, который возвращает [('a', 'b'), ('a', 'c'), ('e', 'f'), ('a', 'h')]
Теперь я хочу выполнить ту же операцию, перебирая кадры данных
df15=pd.DataFrame({'names':[['a','c'],['k','f']]})
df14=pd.DataFrame({'tup':[[('a','g'), ('b','h'), ('c', 'i')],[('d', 'j'), ('e', 'k'), ('f', 'l')]]})
но звонит
for index,row in df14.iterrows():
df15['tup']=[tup for tup in df14['tup'] if any(c in df15.names for c in tup)]
возвращает эту ошибку:
Длина значений не соответствует длине индекса
ожидаемый результат будет
df15
names tup
0 ['a','c'] [('a','g'),('c', 'i')] #not necessary to keep the tuples
1 ['k','f'] [('e', 'k'),('f','l')]