我有一个方案,其中我在CSV文件中有一些数据,我需要遍历每一行并查找是否找到了特定值。如果找到,则执行一项操作,否则执行另一项操作。
这是我使用的数据集:
cat ... | parallel -j 8 --spreadstdin --block $sz ... ./mycode
根据我的CSV文件,印度与南非进行了6场比赛,赢得了5场。因此,最后,“ Ind”的值必须为5,而“ SA”的值必须为1。
但是无论尝试执行此代码时怎么做,我都会遇到以下错误:
import pandas as pd
dataset = pd.read_csv('Teams\India.csv')
Ind = 0 SA = 0
if(dataset.loc[(dataset['Opponent']) == 'South Africa' & (dataset['Result']) == 'Won']): Ind = Ind + 1 else: SA = SA + 1
答案 0 :(得分:1)
看起来您可以一次完成:
Ind = ((dataset['Opponent'] == 'South Africa') & (dataset['Result'] == 'Won')).sum()
SA = len(dataset) - Ind
答案 1 :(得分:0)
您需要if((condition1 == x)&(condition2 == y)):...
您还需要像这样的循环
for row in data:
if...:
counter += 1
答案 2 :(得分:0)
您尝试执行的操作将不起作用,因为loc
将返回条件为 True 的所有行。他们不会自动迭代。
对于您要尝试执行的操作,不必要使用迭代或if语句。
尝试一下:
Ind = dataset.loc[(dataset['Opponent'] == 'South Africa') & (dataset['Result'] == 'Won')].shape[0]
SA = dataset.loc[(dataset['Opponent'] != 'South Africa') | (dataset['Result'] != 'Won')].shape[0]
这样,它将比使用for loop