我想根据表集中超过20000行和200列的最后一列和最后一行的总和,找出最高和最低的5个值。(这是一个多标签问题)。原始表没有列和行之和。我自己加了总和)。请参见此处的玩具数据集:
import pandas as pd
data = {'index': ['0001 ','0002 ','0003 ','0004 ','0005 ','0006
','0007','0008','0009','0010','0011'],
'factor1': [0,1,0,1,0,0,1,0,0,0,1],
'factor2': [1,0,0,1,0,0,0,1,1,1,1],
'factor3': [1,1,1,1,0,0,0,1,1,0,1],
'factor4': [0,1,1,1,0,0,1,1,0,0,1],
'factor5': [1,1,1,1,0,0,0,1,1,1,1],
'factor6': [1,0,0,0,0,0,0,1,1,1,1],
'factor7': [0,1,1,1,1,0,1,1,0,0,1],
'factor8': [1,1,1,1,1,1,0,1,1,1,1],
'factor9': [1,0,0,0,0,0,0,0,0,0,0],
}
df = pd.DataFrame(data,columns=['index','factor1','factor2','factor3','factor4','factor5','factor6','factor7','factor8','factor9'])
count_row = df.count(axis=1)
df
以下是生成的表:
index factor1 factor2 factor3 factor4 factor5 factor6 factor7 factor8 factor9
0 0001 0 1 1 0 1 1 0 1 1
1 0002 1 0 1 1 1 0 1 1 0
2 0003 0 0 1 1 1 0 1 1 0
3 0004 1 1 1 1 1 0 1 1 0
4 0005 0 0 0 0 0 0 1 1 0
5 0006 0 0 0 0 0 0 0 1 0
6 0007 1 0 0 1 0 0 1 0 0
7 0008 0 1 1 1 1 1 1 1 0
8 0009 0 1 1 0 1 1 0 1 0
9 0010 0 1 0 0 1 1 0 1 0
10 0011 1 1 1 1 1 1 1 1 0
使用这段代码,我得到了每列和每行的总和
classSum=df.sum(axis=0)
df["sum"] =df.sum(axis=1)
df =df.append(classSum,ignore_index=True)
rowSum=df.sum(axis=1)
df.at[11,'index']='Nan'
df
列和行合计的表:
index factor1 factor2 factor3 factor4 factor5 factor6 factor7 factor8 factor9 sum
0 0001 0 1 1 0 1 1 0 1 1 6.0
1 0002 1 0 1 1 1 0 1 1 0 6.0
2 0003 0 0 1 1 1 0 1 1 0 5.0
3 0004 1 1 1 1 1 0 1 1 0 7.0
4 0005 0 0 0 0 0 0 1 1 0 2.0
5 0006 0 0 0 0 0 0 0 1 0 1.0
6 0007 1 0 0 1 0 0 1 0 0 3.0
7 0008 0 1 1 1 1 1 1 1 0 7.0
8 0009 0 1 1 0 1 1 0 1 0 5.0
9 0010 0 1 0 0 1 1 0 1 0 4.0
10 0011 1 1 1 1 1 1 1 1 0 8.0
11 Nan 4 6 7 6 8 5 7 10 1 NaN
注:第11行为总和行
我希望得到这样的结果:
基于行: -前五个值的输出如下所示:
factor 8 :10
factor 5 : 8
factor 3 : 7
factor 7 : 7
factor 4 : 6
基于列:
-输出前5个值如下所示:
0011 :8
0008 :7
0004 :7
0001 :6
0002 :6
总和中有相同的值。别理它
那我怎么做呢?谢谢大家!
从您的原始数据开始,因此在没有sum列的情况下,我们可以使用^{} 获得每列或每行的总和(} 链接以获得前5名
axis=1
),然后将结果与^{前5列:
前5行:
如果您确实需要dictionary,请使用
to_dict
链接解决方案:要绘制结果,请使用^{} :
相关问题 更多 >
编程相关推荐