Counting using if inside for loop
I'm using this repository:
https://github.com/fivethirtyeight/data/blob/master/avengers/avengers.csv
For an exercise in DataQuest, I have to count the number of 'Years since joining' is correct by subtracting 2015 (reference year) from column 'Year'.
I'm trying to use a for and if loop to do this simple task but I am having a hard time figuring out. How do I incorporate the 'for row' into the loop?
def Years_joined():
joined_accuracy_count = 0
for row in avengers['Years since joining']:
if (2015 - avengers['Year']) == avengers['Years since joining']:
joined_accuracy_count += 1
return joined_accuracy_count
EDIT: Sorry for not giving more information. The file is in pandas. So pd.read_csv('avengers')
I have two columns. 'Year' and 'Years since joining'. For example, Year would be 1963. Years since joining would be 52. I am trying to write a for-if loop to see if 2015 - 1963 = 52. And if so, add that to a count.
Error: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
python for-loop if-statement
add a comment |
I'm using this repository:
https://github.com/fivethirtyeight/data/blob/master/avengers/avengers.csv
For an exercise in DataQuest, I have to count the number of 'Years since joining' is correct by subtracting 2015 (reference year) from column 'Year'.
I'm trying to use a for and if loop to do this simple task but I am having a hard time figuring out. How do I incorporate the 'for row' into the loop?
def Years_joined():
joined_accuracy_count = 0
for row in avengers['Years since joining']:
if (2015 - avengers['Year']) == avengers['Years since joining']:
joined_accuracy_count += 1
return joined_accuracy_count
EDIT: Sorry for not giving more information. The file is in pandas. So pd.read_csv('avengers')
I have two columns. 'Year' and 'Years since joining'. For example, Year would be 1963. Years since joining would be 52. I am trying to write a for-if loop to see if 2015 - 1963 = 52. And if so, add that to a count.
Error: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
python for-loop if-statement
You can just referencerow
in the loop. See the first example here: wiki.python.org/moin/ForLoop
– Robert Harvey♦
Nov 21 '18 at 19:40
You haven't shown how you read in the CSV.DictReader()
?pandas
?
– roganjosh
Nov 21 '18 at 19:40
1
Ifavengers['Years since joining']
is just an array of years, thenrow
represents the current selected year for each loop iteration. So you'd just haveif (2015 - row) == ...
.
– lurker
Nov 21 '18 at 19:41
@lurker Years since joining isn't an array of years. It's 2015 minus Years, so a two digit number. I am supposed to write a for if loop to count if this is true for all rows.
– Julian
Nov 21 '18 at 20:04
What I meant was "an array of number of years", i.e., numeric number of years.
– lurker
Nov 21 '18 at 20:52
add a comment |
I'm using this repository:
https://github.com/fivethirtyeight/data/blob/master/avengers/avengers.csv
For an exercise in DataQuest, I have to count the number of 'Years since joining' is correct by subtracting 2015 (reference year) from column 'Year'.
I'm trying to use a for and if loop to do this simple task but I am having a hard time figuring out. How do I incorporate the 'for row' into the loop?
def Years_joined():
joined_accuracy_count = 0
for row in avengers['Years since joining']:
if (2015 - avengers['Year']) == avengers['Years since joining']:
joined_accuracy_count += 1
return joined_accuracy_count
EDIT: Sorry for not giving more information. The file is in pandas. So pd.read_csv('avengers')
I have two columns. 'Year' and 'Years since joining'. For example, Year would be 1963. Years since joining would be 52. I am trying to write a for-if loop to see if 2015 - 1963 = 52. And if so, add that to a count.
Error: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
python for-loop if-statement
I'm using this repository:
https://github.com/fivethirtyeight/data/blob/master/avengers/avengers.csv
For an exercise in DataQuest, I have to count the number of 'Years since joining' is correct by subtracting 2015 (reference year) from column 'Year'.
I'm trying to use a for and if loop to do this simple task but I am having a hard time figuring out. How do I incorporate the 'for row' into the loop?
def Years_joined():
joined_accuracy_count = 0
for row in avengers['Years since joining']:
if (2015 - avengers['Year']) == avengers['Years since joining']:
joined_accuracy_count += 1
return joined_accuracy_count
EDIT: Sorry for not giving more information. The file is in pandas. So pd.read_csv('avengers')
I have two columns. 'Year' and 'Years since joining'. For example, Year would be 1963. Years since joining would be 52. I am trying to write a for-if loop to see if 2015 - 1963 = 52. And if so, add that to a count.
Error: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
python for-loop if-statement
python for-loop if-statement
edited Nov 21 '18 at 20:06
Julian
asked Nov 21 '18 at 19:39
JulianJulian
336
336
You can just referencerow
in the loop. See the first example here: wiki.python.org/moin/ForLoop
– Robert Harvey♦
Nov 21 '18 at 19:40
You haven't shown how you read in the CSV.DictReader()
?pandas
?
– roganjosh
Nov 21 '18 at 19:40
1
Ifavengers['Years since joining']
is just an array of years, thenrow
represents the current selected year for each loop iteration. So you'd just haveif (2015 - row) == ...
.
– lurker
Nov 21 '18 at 19:41
@lurker Years since joining isn't an array of years. It's 2015 minus Years, so a two digit number. I am supposed to write a for if loop to count if this is true for all rows.
– Julian
Nov 21 '18 at 20:04
What I meant was "an array of number of years", i.e., numeric number of years.
– lurker
Nov 21 '18 at 20:52
add a comment |
You can just referencerow
in the loop. See the first example here: wiki.python.org/moin/ForLoop
– Robert Harvey♦
Nov 21 '18 at 19:40
You haven't shown how you read in the CSV.DictReader()
?pandas
?
– roganjosh
Nov 21 '18 at 19:40
1
Ifavengers['Years since joining']
is just an array of years, thenrow
represents the current selected year for each loop iteration. So you'd just haveif (2015 - row) == ...
.
– lurker
Nov 21 '18 at 19:41
@lurker Years since joining isn't an array of years. It's 2015 minus Years, so a two digit number. I am supposed to write a for if loop to count if this is true for all rows.
– Julian
Nov 21 '18 at 20:04
What I meant was "an array of number of years", i.e., numeric number of years.
– lurker
Nov 21 '18 at 20:52
You can just reference
row
in the loop. See the first example here: wiki.python.org/moin/ForLoop– Robert Harvey♦
Nov 21 '18 at 19:40
You can just reference
row
in the loop. See the first example here: wiki.python.org/moin/ForLoop– Robert Harvey♦
Nov 21 '18 at 19:40
You haven't shown how you read in the CSV.
DictReader()
? pandas
?– roganjosh
Nov 21 '18 at 19:40
You haven't shown how you read in the CSV.
DictReader()
? pandas
?– roganjosh
Nov 21 '18 at 19:40
1
1
If
avengers['Years since joining']
is just an array of years, then row
represents the current selected year for each loop iteration. So you'd just have if (2015 - row) == ...
.– lurker
Nov 21 '18 at 19:41
If
avengers['Years since joining']
is just an array of years, then row
represents the current selected year for each loop iteration. So you'd just have if (2015 - row) == ...
.– lurker
Nov 21 '18 at 19:41
@lurker Years since joining isn't an array of years. It's 2015 minus Years, so a two digit number. I am supposed to write a for if loop to count if this is true for all rows.
– Julian
Nov 21 '18 at 20:04
@lurker Years since joining isn't an array of years. It's 2015 minus Years, so a two digit number. I am supposed to write a for if loop to count if this is true for all rows.
– Julian
Nov 21 '18 at 20:04
What I meant was "an array of number of years", i.e., numeric number of years.
– lurker
Nov 21 '18 at 20:52
What I meant was "an array of number of years", i.e., numeric number of years.
– lurker
Nov 21 '18 at 20:52
add a comment |
1 Answer
1
active
oldest
votes
I think you want to use avengers.iterrows().
Basically, you're running over the values of a specific column, but that's not a "row" in the sense you want, and you have no access to other columns this way.
Try -
for _, row in avengers.iterrows():
if (2015 - row['Year']) == row['Years since joining']:
joined_accuracy_count += 1
return joined_accuracy_count
P.S: This is only responding to the error you had. If there are other issues with what you're trying to do and how you're going about it that's a different story.
On a side note, the error you were getting is because avengers['Year'] and its counter-part avengers['Years since joining'] are the full columns.
– ShlomiF
Nov 21 '18 at 20:10
1
Thanks! I think this is exactly what I'm looking for.
– Julian
Nov 21 '18 at 20:29
Well, accepting and/or up-voting helps other users and the community as a whole ;-)
– ShlomiF
Nov 21 '18 at 20:31
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53419412%2fcounting-using-if-inside-for-loop%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
I think you want to use avengers.iterrows().
Basically, you're running over the values of a specific column, but that's not a "row" in the sense you want, and you have no access to other columns this way.
Try -
for _, row in avengers.iterrows():
if (2015 - row['Year']) == row['Years since joining']:
joined_accuracy_count += 1
return joined_accuracy_count
P.S: This is only responding to the error you had. If there are other issues with what you're trying to do and how you're going about it that's a different story.
On a side note, the error you were getting is because avengers['Year'] and its counter-part avengers['Years since joining'] are the full columns.
– ShlomiF
Nov 21 '18 at 20:10
1
Thanks! I think this is exactly what I'm looking for.
– Julian
Nov 21 '18 at 20:29
Well, accepting and/or up-voting helps other users and the community as a whole ;-)
– ShlomiF
Nov 21 '18 at 20:31
add a comment |
I think you want to use avengers.iterrows().
Basically, you're running over the values of a specific column, but that's not a "row" in the sense you want, and you have no access to other columns this way.
Try -
for _, row in avengers.iterrows():
if (2015 - row['Year']) == row['Years since joining']:
joined_accuracy_count += 1
return joined_accuracy_count
P.S: This is only responding to the error you had. If there are other issues with what you're trying to do and how you're going about it that's a different story.
On a side note, the error you were getting is because avengers['Year'] and its counter-part avengers['Years since joining'] are the full columns.
– ShlomiF
Nov 21 '18 at 20:10
1
Thanks! I think this is exactly what I'm looking for.
– Julian
Nov 21 '18 at 20:29
Well, accepting and/or up-voting helps other users and the community as a whole ;-)
– ShlomiF
Nov 21 '18 at 20:31
add a comment |
I think you want to use avengers.iterrows().
Basically, you're running over the values of a specific column, but that's not a "row" in the sense you want, and you have no access to other columns this way.
Try -
for _, row in avengers.iterrows():
if (2015 - row['Year']) == row['Years since joining']:
joined_accuracy_count += 1
return joined_accuracy_count
P.S: This is only responding to the error you had. If there are other issues with what you're trying to do and how you're going about it that's a different story.
I think you want to use avengers.iterrows().
Basically, you're running over the values of a specific column, but that's not a "row" in the sense you want, and you have no access to other columns this way.
Try -
for _, row in avengers.iterrows():
if (2015 - row['Year']) == row['Years since joining']:
joined_accuracy_count += 1
return joined_accuracy_count
P.S: This is only responding to the error you had. If there are other issues with what you're trying to do and how you're going about it that's a different story.
answered Nov 21 '18 at 20:06
ShlomiFShlomiF
832410
832410
On a side note, the error you were getting is because avengers['Year'] and its counter-part avengers['Years since joining'] are the full columns.
– ShlomiF
Nov 21 '18 at 20:10
1
Thanks! I think this is exactly what I'm looking for.
– Julian
Nov 21 '18 at 20:29
Well, accepting and/or up-voting helps other users and the community as a whole ;-)
– ShlomiF
Nov 21 '18 at 20:31
add a comment |
On a side note, the error you were getting is because avengers['Year'] and its counter-part avengers['Years since joining'] are the full columns.
– ShlomiF
Nov 21 '18 at 20:10
1
Thanks! I think this is exactly what I'm looking for.
– Julian
Nov 21 '18 at 20:29
Well, accepting and/or up-voting helps other users and the community as a whole ;-)
– ShlomiF
Nov 21 '18 at 20:31
On a side note, the error you were getting is because avengers['Year'] and its counter-part avengers['Years since joining'] are the full columns.
– ShlomiF
Nov 21 '18 at 20:10
On a side note, the error you were getting is because avengers['Year'] and its counter-part avengers['Years since joining'] are the full columns.
– ShlomiF
Nov 21 '18 at 20:10
1
1
Thanks! I think this is exactly what I'm looking for.
– Julian
Nov 21 '18 at 20:29
Thanks! I think this is exactly what I'm looking for.
– Julian
Nov 21 '18 at 20:29
Well, accepting and/or up-voting helps other users and the community as a whole ;-)
– ShlomiF
Nov 21 '18 at 20:31
Well, accepting and/or up-voting helps other users and the community as a whole ;-)
– ShlomiF
Nov 21 '18 at 20:31
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53419412%2fcounting-using-if-inside-for-loop%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
You can just reference
row
in the loop. See the first example here: wiki.python.org/moin/ForLoop– Robert Harvey♦
Nov 21 '18 at 19:40
You haven't shown how you read in the CSV.
DictReader()
?pandas
?– roganjosh
Nov 21 '18 at 19:40
1
If
avengers['Years since joining']
is just an array of years, thenrow
represents the current selected year for each loop iteration. So you'd just haveif (2015 - row) == ...
.– lurker
Nov 21 '18 at 19:41
@lurker Years since joining isn't an array of years. It's 2015 minus Years, so a two digit number. I am supposed to write a for if loop to count if this is true for all rows.
– Julian
Nov 21 '18 at 20:04
What I meant was "an array of number of years", i.e., numeric number of years.
– lurker
Nov 21 '18 at 20:52