我正在使用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())
现在,我想在所有路线上都应用此公式,然后迭代数天,但我仍然坚持这样做。