numpy genfromtxt를 구조화 된 배열로 사용하여 CSV 파일을 읽으려고합니다. 나는 그것을 정렬 한 다음 groupby를 사용하여 열 중 하나의 문자열 값을 기반으로 파일을 그룹으로 분리합니다. 마지막으로 추가 처리를 위해 각 그룹의 열을 연결합니다.파이썬 그룹 및 스플 라이스 : 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 " "
I 번째 열의 VA 여러 배열을 반환하고자 출력은 상기 제 1 열 값을 그룹화 IES를
그래서 야채 : "토마토」, 「시금치", 과일 : [ "water melon", "grapes"] ... 등groupby에서 그룹 반환을 시도했지만 iterator이므로 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 -value-of-a-string-column – frank
그룹화하기 전에 목록을 더 잘 정렬합니다. 그렇지 않으면 일부 항목이 손실됩니다. 다음 코드를 사용하여 목록을 정렬 할 수 있습니다. food1.sort (key = lambda x : x [0]) –
@ user2720402 : 실제로. 수정 됨 – dawg