With this code I am creating new columns with secific values based on the magnitude of merge_c['Actual methane']. I need a for loop to iterate by each row and an if statement as a condition to determine the other values of the other columns.
This is how my code looks like:
merge_c = merge_c.sort_values(by="2019-CON", ascending=False)
merge_c.head(21)
merge_c['Actual methane'] = merge_c['2019-CON'] - merge_c['total_methane_mean_TWh']
for index, row in merge_c.iterrows():
if merge_c[merge_c['Actual methane'] > 0]:
merge_c['bio_met_min'] = 0
merge_c['lower_bound_ng'] = merge_c['Actual methane'] *0.016
merge_c['higher_bound_ng'] = merge_c['Actual methane'][i] *0.056
merge_c['lower_bound_bio'] = merge_c['total_methane_mean_TWh'] *0.059
merge_c['higher_bound_bio'] = merge_c['total_methane_mean_TWh'] *0.0604
merge_c['lower_total'] = merge_c['lower_bound_ng'] + merge_c['lower_bound_bio']
merge_c['higher_total'] = merge_c['higher_bound_ng'][i] + merge_c['higher_bound_bio']
merge_c['lower_total_ng'] = merge_c['2019-CON'] *0.016
merge_c['higher_total_ng'] = merge_c['2019-CON']*0.056
else:
merge_c['bio_met_min'] = merge_c['total_methane_mean_TWh'] + merge_c['Actual methane']
merge_c['lower_bound_ng'] = 0
merge_c['higher_bound_ng'] = 0
merge_c['lower_bound_bio'] = 0
merge_c['higher_bound_bio'] = 0
merge_c['lower_total'] = merge_c['bio_met_min']*0.051
merge_c['higher_total'] = merge_c['bio_met_min'] *0.053
merge_c['lower_total_ng']= merge_c['2019-CON'] *0.008
merge_c['higher_total_ng'] = merge_c['2019-CON'] *0.022
Error:
ValueError Traceback (most recent call last)
<ipython-input-19-65d61ab401ac> in <module>
4 merge_c['Actual methane'] = merge_c['2019-CON'] - merge_c['total_methane_mean_TWh']
5 for index, row in merge_c.iterrows():
----> 6 if merge_c[merge_c['Actual methane'] > 0]:
-> 1442 raise ValueError(
1443 f"The truth value of a {type(self).__name__} is ambiguous. "
1444 "Use a.empty, a.bool(), a.item(), a.any() or a.all()."
ValueError: The truth value of a GeoDataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
I believe it does not like that I am using interrows() and the if statement together. I am trying to pass it through a for loop and an if statement so I can change the value of specific rows and columns based on merge_c['Actual_methane']. By using interrows(), I can have the values I am looking for for each row. Not sure how to fix it. Thank you so much in advance