Python 如何正确使用带有数据帧的forloop,以便正确打印输出次数

Python 如何正确使用带有数据帧的forloop,以便正确打印输出次数,python,pandas,numpy,dataframe,for-loop,Python,Pandas,Numpy,Dataframe,For Loop,我这里有一些示例代码,如下所示: import numpy as np import pandas as pd x = range(1, 12) arr1 = np.random.randint(x) arr2 = np.array(x) arr3 = np.random.randint(x) arr4 = np.random.randint(x) arr5 = np.random.randint(0, 2, 11) dict_df = { 'arr1' : arr1, '

我这里有一些示例代码,如下所示:

import numpy as np
import pandas as pd
x = range(1, 12)
arr1 = np.random.randint(x)
arr2 = np.array(x)
arr3 = np.random.randint(x)
arr4 = np.random.randint(x)
arr5 = np.random.randint(0, 2, 11)



dict_df = {
    'arr1' : arr1,
    'arr2' : arr2,
    'arr3' : arr3,
    'arr4' : arr4,
    'arr5' : arr5
}
d = pd.DataFrame(dict_df)
for i in d.index:
    number = d['arr1'][i]
    for num in d['arr5']:
        if num == 1:
            print('Num equals 1, and its number in arr1 is {}'.format(number))
我所做的是创建一个基本的数据框架,每个列中有一组随机数。除了最后一列,它只有1和0的组合。目前,此代码的输出为:

Num equals 1, and its number in arr1 is 0
Num equals 1, and its number in arr1 is 0
Num equals 1, and its number in arr1 is 0
Num equals 1, and its number in arr1 is 0
Num equals 1, and its number in arr1 is 0
Num equals 1, and its number in arr1 is 0
Num equals 1, and its number in arr1 is 0
Num equals 1, and its number in arr1 is 0
Num equals 1, and its number in arr1 is 2
Num equals 1, and its number in arr1 is 2
Num equals 1, and its number in arr1 is 2
Num equals 1, and its number in arr1 is 2
Num equals 1, and its number in arr1 is 1
Num equals 1, and its number in arr1 is 1
Num equals 1, and its number in arr1 is 1
Num equals 1, and its number in arr1 is 1
Num equals 1, and its number in arr1 is 3
Num equals 1, and its number in arr1 is 3
Num equals 1, and its number in arr1 is 3
Num equals 1, and its number in arr1 is 3
Num equals 1, and its number in arr1 is 2
Num equals 1, and its number in arr1 is 2
Num equals 1, and its number in arr1 is 2
Num equals 1, and its number in arr1 is 2
Num equals 1, and its number in arr1 is 3
Num equals 1, and its number in arr1 is 3
Num equals 1, and its number in arr1 is 3
Num equals 1, and its number in arr1 is 3
Num equals 1, and its number in arr1 is 5
Num equals 1, and its number in arr1 is 5
Num equals 1, and its number in arr1 is 5
Num equals 1, and its number in arr1 is 5
Num equals 1, and its number in arr1 is 4
Num equals 1, and its number in arr1 is 4
Num equals 1, and its number in arr1 is 4
Num equals 1, and its number in arr1 is 4
Num equals 1, and its number in arr1 is 8
Num equals 1, and its number in arr1 is 8
Num equals 1, and its number in arr1 is 8
Num equals 1, and its number in arr1 is 8
Num equals 1, and its number in arr1 is 8
Num equals 1, and its number in arr1 is 8
Num equals 1, and its number in arr1 is 8
Num equals 1, and its number in arr1 is 8
​
很明显,在这种情况下,我误用了for循环。我希望得到的输出是,让代码查看列arr5中的每个数字,然后破译它是否等于1或0。如果它等于1,我希望代码打印它等于1,然后还打印arr1列中同一行的相关编号。如何更改代码以接收此输出?谢谢

您可以这样尝试:

dict_df = {
    'arr1' : arr1,
    'arr2' : arr2,
    'arr3' : arr3,
    'arr4' : arr4,
    'arr5' : arr5
}
d = pd.DataFrame(dict_df)

print('\n'.join(
    [f'Num equals 1, and its number in arr1 is {x}' for x in d[d.arr5==1]['arr1']]
))

是否希望结果与
d[d.arr5==1]['arr1']
相同?@Bear Brown是的,但我希望每次出现1时都将其打印出来。假设arr5列中有65行,那么它应该按照我的问题中的方式打印出65行代码。您的代码生成
TypeError:int()参数必须是字符串、类似对象的字节或数字,而不是
arr1=np.random.randint(x)
-哪个版本的Numpy?请提供。@wwii hm。。。问题中的代码对我有用。@wwii我没有得到那个错误。我直接复制并粘贴了代码,得到了上面显示的输出。