如何遍历数据帧,并对该数据帧的每一行执行一些操作?

时间:2019-04-17 16:09:27

标签: python-3.x pandas csv dataframe for-loop

我有一个方案,其中我在CSV文件中有一些数据,我需要遍历每一行并查找是否找到了特定值。如果找到,则执行一项操作,否则执行另一项操作。

这是我使用的数据集:

enter image description here

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

3 个答案:

答案 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

更快