我有一个非常大的csv文件,其结构如下:
a1 b1 c1 a2 b2 c2 a3 b3 c3 ..... a999 b999 c999
0 5 4 2 3 2 2 6 7 9 ....................
1 2 1 4 4 6 9 3 5 9 ....................
.
.
我要做的是将a、b和c的列按N的集合进行分组,并在每一行中检查集合的最大值(argmax)的索引何时更改。你知道吗
所以在上面的例子中,对于N=3,a1,b1,c1是第0行的第一个集合,argmax是0,第二个集合是a2,b2,c2,argmax仍然是0,第三个集合是a3,b3,c3,但是现在argmax是2。我确实在寻找一个脚本,它解析整个csv文件并返回[c3,c1]。c3,因为argmax在第0行和c1行中变化,因为argmax在第1行中没有变化,但c1是该集合中的最大值。你知道吗
我现在用两个for循环来做这个,它很慢而且看起来很难看,有没有更好的熊猫Python方法呢?我觉得一定有。你知道吗
我尽量保持代码尽可能简单。您可以按切片列名转换数据帧和组:
输出:
这意味着对于第0行,组1的最大值在索引0处,组2的最大值在索引3处(或者,0表示取mod 3),组3的最大值在索引8处(如果取mod 3,则为2)。第1行的读数相同:)
如果需要实际列名:
输出:
您可以
groupby
列集合,并使用.idxmax
查找每个集合中出现最大值的列。你可以找到第一个字母变化的地方(如果有)来得到你的列表。你知道吗样本数据
相关问题 更多 >
编程相关推荐