我有一个循环,在那里我经常收到错误消息。
print(((df1['col1_df'] == 0) & (df1['col2_df'] == True)).sum())
print(((df1['col1_df'] == 0) & (df1['col3_df'] == True)).sum())
print(((df1['col1_df'] == 0) & (df1['col4_df'] == True)).sum())
print(((df1['col1_df'] == 0) & (df1['col5_df'] == True)).sum())
print(((df2['col1_df'] == 0) & (df2['col2_df'] == True)).sum())
print(((df2['col1_df'] == 0) & (df2['col3_df'] == True)).sum())
print(((df2['col1_df'] == 0) & (df2['col4_df'] == True)).sum())
print(((df2['col1_df'] == 0) & (df2['col5_df'] == True)).sum())
我想通过一个函数循环它们。
到目前为止,我有:
for i in range (2,5):
col = "col{}_df".format(i)
print(((df['col'] == 0) & (df['col'] == 2)).sum())
我如何对df进行编号,并让df通过1、2、3、4(如df1、df2、df3(
col
是一个变量。'col'
是一个字符串。具有df['col']
并不表示变量col
。
您的字符串格式错误:col = "col{}_df".format(i)
此外,range(2,5)
将为您提供[2,5)
,而不是[2,5]
。它不具有包容性。
您可以使用以下理解用两行来表达整个代码:
print(*( ((df1[f'col1_df'] == 0) & (df1[f'col{i}_df'] == True)).sum() for i in range(2,6) ), sep="n")
print(*( ((df2[f'col1_df'] == 0) & (df2[f'col{i}_df'] == True)).sum() for i in range(2,6) ), sep="n")
表达式((df1[f'col1_df'] == 0) & (df1[f'col{i}_df'] == True)).sum() for i in range(2,6) )
创建生成器对象,该生成器对象逐个地产生4个表达式。
*
分散该生成器中的元素,并将参数传递给print
,就像传递逗号分隔的参数列表一样。end=n
确保在输出时,这些参数中的每一个都由新行分隔。