I believe that you are operating on copies of the dataframe. I think you should use apply
:
from StringIO import StringIO
import pandas
datastring = StringIO("""\
time_period total_cost total_revenue
7days 150 250
14days 350 600
30days 900 750
7days 180 400
14days 430 620
""")
data = pandas.read_table(datastring, sep='\s\s+')
data['total_cost_avg'] = data.apply(
lambda row: row['total_cost'] / float(row['time_period'][:-4]),
axis=1
)
gives me:
time_period total_cost total_revenue total_cost_avg
0 7days 150 250 21.428571
1 14days 350 600 25.000000
2 30days 900 750 30.000000
3 7days 180 400 25.714286
4 14days 430 620 30.714286