我正在尝试使用numpy genfromtxt将csv文件读取到结构化数组中。我计划对其进行排序,然后使用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 " "
我想要的输出是返回第二列va; ies的多个数组,这些数组按第一列的值分组,
所以
蔬菜:[“番茄”,“菠菜”],
水果:[“西瓜”,“葡萄”] ...等
我试图拼接从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];
还有其他想法我该如何完成这个小组的工作?
谢谢。
最佳答案
我认为您正在尝试这样做:
from itertools import groupby
food1 = [[" vegetable", "tomato"], [" vegetable", "spinach"], [" fruit", "watermelon"], [" fruit", "grapes"], [" meat", "beef"]]
data={}
for key, group in groupby(sorted(food1), key=lambda x: x[0]):
data[key.strip()]=[v[1] for v in group]
数据为:
{'vegetable': ['tomato', 'spinach'],
'fruit': ['watermelon', 'grapes'],
'meat': ['beef']}
关于python - Python组和拼接:拼接从itertools.groupby返回的结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17561830/