Skip to content
Advertisement

Kernel dies when processing DataFrame

I’ve been able to get this to execute once but since then the kernel just hangs and then dies. Any help would be appreciated.

[Dataframe head]

1

new_companies_df['Total Raised']= new_companies_df['Total Raised'].str.replace('$','')

#Program ref source:https://www.geeksforgeeks.org/python-convert-suffix-denomination-to-values/

#Initialize values dictionary
val_dict = {"M": 1000000, "B": 100000000,'K':1000,'None': 0}

result = []

for x in new_companies_df['Total Raised']:
   
 for key in val_dict:
        if key in value:
  
            # conversion of dictionary keys to values
            val = (x.replace(key, "")) * val_dict[key]
            result.append(val)

new_companies_df['Total Raised ($)'] = result

new_companies_df.head()

Advertisement

Answer

You might want to consider using .apply() function from pandas directly with a custom function or a lambda expression. Something like this

def replace(x):
  val_dict = {"M": 1000000, "B": 100000000,'K':1000,'None': 0}

  for key in val_dict:
    if key in x:
      value = float(x.replace(key, ""))  # converting to float is important
      multiplier = float(val_dict[key])
      return value * multiplier

new_companies_df['Total Raised ($)']  = new_companies_df['Total Raised'].apply(replace)

I do not see any conversion to float. I suspect that your kernel died because you are multiplying strings with a large number which can get very nasty results. For example

"1" * 10 # this produces -> "1111111111"
1 * 10 # this produces -> 10
User contributions licensed under: CC BY-SA
3 People found this is helpful
Advertisement