Я пытаюсь прочитать файл csv, используя numpy genfromtxt, в структурированный массив. Я планирую сортировать его, а затем использовать groupby для разделения файла на группы на основе строковых значений одного из столбцов. Наконец, я буду объединять столбцы из каждой группы для дополнительной обработки.Группа Python и сплайсинг: сплайсирование результата, возвращаемого из itertools.groupby
Вот небольшой пример, когда я хочу, чтобы для каждой из групп был возвращен конкретный столбец.
import numpy as np
from itertools import groupby
food1 = [[" vegetable", "tomato"], [" vegetable", "spinach"], [" fruit", "watermelon"], [" fruit", "grapes"], [" meat", "beef"]]
for key, group in groupby(food1, lambda x: x[0]):
print key
group[:1]
# In the line above, TypeError: 'itertools._grouper' object is unsubscriptable, I have tried it with food1 or food2
for thing in group:
print key + ": " + thing[1];
print " "
Выходной Я хотел бы возвращаю несколько массивов во втором в колонка; х лет, сгруппированных по значениям первого столбца,
Так растительные: [ «помидоры», «шпинат»], фруктов : ["water melon", "grapes"] ... и т. д.
Я попытался объединить групповой возврат из groupby, но поскольку это итератор, я бы получил TypeError: объект itertools._grouper не подлежит подписке ,
Я знаю, что я мог бы объединить данные, загруженные из genfromtxt, но это комбинация группировки сначала, а затем сплайсинг, который дает мне проблемы.
data = np.genfromtxt("file.txt", delimiter=',', skiprows=3)
# splicing a column from the ndarray read from the csv file
column2 = data[:,2];
Любые другие идеи, как я мог выполнить эту группу, а затем сплайсировать?
Спасибо.
Спасибо, это работает. Ответ на другой мой вопрос также привел к другой альтернативе для группировки значений и выбора столбца без использования groupby http://stackoverflow.com/questions/17560879/python-numpy-split-a-csv-file-by-the -values-of-a-string-column – frank
Лучше отсортировать список перед группировкой; в противном случае вы потеряете некоторые предметы. Вы можете использовать следующий код для сортировки списка: food1.sort (key = lambda x: x [0]) –
@ user2720402: действительно. Исправлена – dawg