Когда вы делаете list = str(list)
, вы конвертируете свой список в строковое представление, то есть list
становится
"[['64774', '', ''], ['60240', '95868', ''], ['60500', '95867', ''], ['19303', '60271', ''], ['38724', '60502', '95867'], ['11402', '19125', '60500']]"
Затем вы перебираете строку с пониманием списка
[x for x in list if x.startswith('6')]
, который производит каждый отдельный символ в строке, что означает, что вы просто найдете все вхождения 6
в строке, следовательно, ваш результат
['6', '6', '6', '6', '6', '6', '6', '6', '6']
Sidenote: не используйте имена переменных, которые встроены в теневые функции, такие как list
, dict
и т. Д., Это почти наверняка вызовет проблемы в будущем.
Я не уверен, есть ли какая-либо конкретная причина использовать фрейм данных / панды для вашего вопроса. Если нет, вы можете просто использовать понимание списка
d = {
'c1': ['64774', '60240', '60500', '19303', '38724', '11402'],
'c2': ['', '95868', '95867', '60271', '60502', '19125'],
'c3':['','','','','95867','60500']
}
d2 = [[x] for v in d.values() for x in v if x.startswith('6')]
# d2: [['64774'], ['60240'], ['60500'], ['60271'], ['60502'], ['60500']]