如何在有条件的情况下提高这个for循环的速度?

2024-04-25 16:34:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我想计算每行有多少列的值大于零。因此,如果三列中有两列具有所需的值,则得分为2。你知道吗

我可以使用for循环来构建它,但是它看起来很慢,所以我正在寻找更快的替代方案。我该怎么做?你知道吗


df = pd.DataFrame({'intro': [1, 2, 3], 'quote': [0, 1, 0],'sample': [0, 1, 4]}, 
                  columns=['intro', 'quote','sample'])

df['score']=0
cols=['intro', 'quote', 'sample']
for i in range(len(df)):
    print(i)
    for col in cols:
        if df.iloc[i][col] >= 1:
            df['score'][i]= df['score'][i]+1
df_expected = pd.DataFrame({'intro': [1, 2, 3], 'quote': [0, 1, 0],'sample': [0, 1, 4],'score': [1, 3, 2]}, 
                  columns=['intro', 'quote','sample','score'])
df_expected

Tags: columnssampleindataframedffor方案range
2条回答

这将达到以下目的:

df['score']=(df>0).sum(axis=1)

您可以创建值的真/假帧>;0,如下所示:

df > 0

不能使用

(df > 0).sum(axis) 

并创建如下列:

df['score'] = (df > 0).sum(axis=1)

相关问题 更多 >