我使用Python 2.7(Anaconda)处理表格数据。我已经加载了一个包含两列的文本文件,例如另一列中唯一值的列中值的均值
[[ 1. 8.]
[ 2. 4.]
[ 3. 1.]
[ 4. 5.]
[ 5. 6.]
[ 1. 9.]
[ 2. 0.]
[ 3. 7.]
[ 4. 3.]
[ 5. 2.]]
我的目标是计算第二列中与第一列中唯一值匹配的所有值的平均值,例如, 1的平均值为8.5,2为2,3为4. 首先,我通过提取列和应用np.unique()来过滤第一列中的唯一值,数组“独特”。我创建了一个循环,在定义唯一值时起作用:
mean= 0
values=[]
for i in range(0,len(first),1):
if first[i]==1:
values.append(second[i])
print(np.mean(values))
其中第一个和第二个是特定列。 现在我想让它不那么具体。我试过
mean = 0
values = []
means=[]
for i in unique:
for k in range(0,len(first),1):
if first[k]==i:
values.append(second[k])
mean = np.mean(values)
means.append(mean)
mean=0
values=[]
print(means)
但它只返回原来的第二列。 有没有人有关于如何使此代码非特定的想法?实际上,我有大约70,000行,所以我不能手动完成。
你执着于使用纯numpy的?这在大熊猫中是微不足道的(你要求一个“groupby”操作)。 – DSM
数据文件是什么样的? – wwii
这是一个表格.txt 我在下面的答案中提到了熊猫的答案,结果很好。我以前不知道这件事。 – Maurus