writerow
принимает последовательность. Вы даете ему одну строку, поэтому она обрабатывает это как последовательность, а строки действуют как последовательности символов.
Что еще вы хотите в этой строке? Ничего? Если это так, сделайте его одним из элементов:
spamwriter.writerow([u' '.join(model.a.stripped_strings).encode('utf8').strip()])
(Кстати, вызов unicode()
совершенно не нужен, поскольку вы уже соединяетесь с разделителем unicode.)
Для больших наборов данных эффективна память для чтения только выбранных строк с помощью параметра skiprows
.
Пример
pred = lambda x: x not in [1, 3]
pd.read_csv("data.csv", skiprows=pred, index_col=0, names=...)
Подробности
Из docs :
skiprows
: list-like или integer или callable, по умолчаниюNone
...
Если вызываемый, вызываемая функция будет оцениваться по индексам строк, возвращается True, если строка должна быть пропущена, а False - в противном случае. Примером допустимого вызываемого аргумента будет
blockquote>lambda x: x in [0, 2]
Эта функция работает в версии pandas 0.20.0+. См. Также соответствующую проблему и связанную запись .
List = [1, 3]
df.ix[List]
должен сделать трюк! Когда я индексирую кадры данных, я всегда использую метод .ix (). Его намного проще и гибче ...
UPDATE Это уже не принятый метод индексирования. Метод ix
устарел. Используйте .iloc
для индексирования с индексом целых чисел и .loc
для индексирования на основе меток.
вы также можете использовать iloc:
df.iloc[[1,3],:]