有条件地对pandas数据框进行计算[英] Conditionally perform calculation on pandas dataframe

本文是小编为大家收集整理的关于有条件地对pandas数据框进行计算的处理方法,想解了有条件地对pandas数据框进行计算的问题怎么解决?有条件地对pandas数据框进行计算问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

time_period    total_cost    total_revenue
7days          150           250
14days         350           600
30days         900           750
7days          180           400
14days         430           620

鉴于这些数据,我想将 total_cost 和 total_revenue 列转换为给定时间段的平均值.我认为这会起作用:

df[['total_cost','total_revenue']][df.time_period]=="7days"]=df[['total_cost','total_revenue']][df.time_period]=="7days"]/7

但它返回的数据帧不变.

推荐答案

我相信您正在对数据帧的副本进行操作.我认为你应该使用 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
)

给我:

  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

本文地址:https://www.itbaoku.cn/post/1727762.html