在python中循环一段数据和求和

在python中循环一段数据和求和,python,pandas,Python,Pandas,我有一个相当大的数据集,我希望每行的值总和等于1 输入文件: 1526 0 1 2 1 0 782 0 1 1 1 2 7653 1 1 1 0 0 87bt 1 0 1 2 2 所需的输出文件: 1526 2 782 3 7653 3 87bt 2 我的代码: df = pd.read_csv('data1', delimiter=' ') df_sub = df.iloc[:,1:] sum1=0 for het in df_sub: if het==1 :

我有一个相当大的数据集,我希望每行的值总和等于1

输入文件:

1526  0 1 2 1 0
782   0 1 1 1 2
7653  1 1 1 0 0
87bt  1 0 1 2 2
所需的输出文件:

1526 2
782 3
7653 3
87bt 2
我的代码:

df = pd.read_csv('data1', delimiter=' ')

 df_sub = df.iloc[:,1:]

sum1=0

for het in df_sub:

     if het==1 :

      sum1=sum1+1
 print(sum1)

 
你可以在这里使用。我建议在读取csv本身时使用index_col参数来设置索引

from io import StringIO
text = '''1526  0 1 2 1 0
782   0 1 1 1 2
7653  1 1 1 0 0
87bt  1 0 1 2 2'''

df = pd.read_csv(StringIO(text), header=None, index_col=0) #`index_col=0` sets 1st column as index
df.eq(1).sum(axis=1)
0
1526    2
782     3
7653    3
87bt    2
dtype: int64
如果性能有问题,您可以使用它,它比df.eq…sum…,timeit results快得多

轴=1表示在柱轴上,熊猫也可以接受:

df.eq(1).sum(axis='columns')

你没有列名吗?你能解释一下你的逻辑吗。我想打印或写入一个文件的第一列值及其相应的总和1avoid python循环与大数据集@Ch3steR老实说,我不喜欢在sum1中隐式使用axis=1,它的语法非常混乱,尤其是在您的示例中。在第一部分中,它的字面意思是整数1,而在第二部分中,它的轴参数是axis.df=pd.read\u csvdata1,header=None,index\u col=0,delimiter=''a=pd.Seriesnp.count\u nonzerodf.to\u numpy==1,axis=1,index=df.index这只为所有行打印0
df.eq(1).sum(axis='columns')