Python Pandas:与apply()一起使用时功能不起作用 [英] Python Pandas: Function doesn't work when used with apply()
本文介绍了Python Pandas:与apply()一起使用时功能不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
以下功能:
def func(x):
for k in x['slices']:
for j in k:
print(x['low'].iloc[j])
以以下方式应用将起作用:
applied in the following manner works:
func(test)
但是如下却没有:
test.apply(func, axis=1)
您能确定原因吗?
我仅将打印用于调试目的: 该功能曾经是:
I used the print only for debug purpose: the function used to be :
def func(x):
result=[]
for k in x:
for j in k:
result.append(x['low'].iloc[j])
return result
这也不起作用
在元素下方重建数据.
df = pd.DataFrame(dict, columns=["low", "slices"])
dict = {'low': {0: 1207.25,
1: 1207.5,
2: 1205.75,
3: 1206.0,
4: 1201.0,
5: 1202.75,
6: 1203.75},
'slices': {0: [slice(1, 2, None)],
1: [slice(1, 3, None), slice(2, 3, None)],
2: [slice(1, 4, None), slice(2, 4, None), slice(3, 4, None)],
3: [slice(1, 5, None),
slice(2, 5, None),
slice(3, 5, None),
slice(4, 5, None)],
4: [slice(1, 6, None),
slice(2, 6, None),
slice(3, 6, None),
slice(4, 6, None),
slice(5, 6, None)],
5: [slice(1, 7, None),
slice(2, 7, None),
slice(3, 7, None),
slice(4, 7, None),
slice(5, 7, None),
slice(6, 7, None)],
6: [slice(1, 8, None),
slice(2, 8, None),
slice(3, 8, None),
slice(4, 8, None),
slice(5, 8, None),
slice(6, 8, None),
slice(7, 8, None)]}}
推荐答案
以这种方式定义函数
def fun(slices):
return [df.low.loc[s].tolist() for s in slices]
并应用于切片"列
df['slices_low'] = df.slices.apply(fun)
df
这篇关于Python Pandas:与apply()一起使用时功能不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文