避免循环并应用lambda函数

时间:2019-05-27 10:10:36

标签: python pandas dataframe lambda

我正在使用Pandas编写一些Python代码。基本上,目的是根据两个条件(日期,路线)寻找一个值,如果该值为空,则在仅设置一个条件(路线)的所有值之间求平均值。最终所需的输出应该是一个表,路由为行,天为列。

这是我的代码:

df = []
df= pd.DataFrame(unique_route)
for day in week:
    col = []
    for route in unique_route:
        if source_table[(source_table.route ==route)&(source_table.day==day)].empty:
            col.append(source_table[source_table.route ==route ].value.mean())
        else:
            col.append(source_table[(source_table.route==route)&(source_table.day==day)].value.mean())

    col = pd.DataFrame(col)
    week3_spock = pd.concat([week3_spock,col],axis=1)

df = pd.DataFrame(df .values, columns=week)

我读到for循环不是填充表的好方法,并且lambda函数的工作方式更好。

然后我尝试创建一个函数:

def funct(route, day):
 if source_table[(source_table.route ==route)&(source_table.day==day)].empty:
                return (source_table[source_table.route ==route ].value.mean())
            else:
                return (source_table[(source_table.route==route)&(source_table.day==day)].value.mean())

现在,我想在所有路线上都应用此公式,然后迭代数天,但我仍然坚持这样做。

0 个答案:

没有答案