我有这样的数据:
met = """
A B C D E F
idx1 1 3 5 5 7 10
idx2 2 3 6 12 6 1
.... """"
我想要的是这个输出,其中X是A和D的平均值,Y是B和E的平均值,Z是C和F的平均值
output = """
X Y Z
idx1 3 5 7.5
idx2 7 4.5 3.5 """
考虑一下如何处理这个问题:我想基本上把每一行分成两部分,然后计算每一部分对应值的平均值(索引1和1;2与2,3与3)并输出结果
我更愿意看看我是否能在基本pytho中有效地做到这一点,但另外一个涉及numpy或pandas的解决方案也可能是
谢谢你
首先,这个错误的原因是您试图使用
idx
,一个列表,作为字典中的键d
。不能使用列表等可变值作为字典键(否则,您可能只是改变列表,而您的字典将突然无效。)通常的解决方案是创建一个元组,其中包含与列表相同的元素(因为元组是不可变的,因此如果它们的元素是可散列的,则可以散列),如d[tuple(idx)]
但在这种情况下,这没有任何意义。这样做只需将每个
val
添加到相同的字典值上(实际上,它甚至不会这样做,因为list.add
根本不存在。你可能想要list.append
在这里。但是,既然它没有意义,也没有做任何有用的事情,就不值得花太多的精力去弄清楚如何做对……)如果你想这样做,你可以跳过这个循环,去做d[tuple(idx)] += june
,但我无法想象你为什么要这样做我认为您要做的是为每个
june
条目使用相应的idx
条目。您可以通过zip
将这两个列表ping在一起来实现这一点,但实际上,有一种更简单的方法:在生成它们时立即使用它们,而不是存储它们,然后在以后尝试找出如何使用它们:然而,即使这样也没有真正意义。假设你要对
july
做和你对june
做的一样的事情,这只是把fields[1:]
加在一起从你的
intermediate
看来,你真正想要的是把idx
和六月与七月的对比作为一个键。这很简单:或者你根本不想要一份口述,只是一份清单:
相关问题 更多 >
编程相关推荐