0

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

0 Answers0