使用函数循环执行几个命令



我有一个循环,在那里我经常收到错误消息。

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确保在输出时,这些参数中的每一个都由新行分隔。

最新更新