我有以下代码:
d = {'p': [1, 1], 'm': [1, 1]}
df = pd.DataFrame(data=d)
df.apply(lambda row: pandas.Series(meth(row.name)), axis=1)
def meth(i):
return [2, 3]
在迭代过程中,在“ meth”返回语句处具有断点的情况下,“ i”具有以下值:
{int64} 0
{int} 0 !!!
{int} 1
所以我有一个额外的迭代和一个类型的改变,这很奇怪。 Python 3.6;熊猫0.25.0,皮查姆 PyCharm 2019.2(专业版) 内部版本#PY-192.5728.105,于2019年7月23日构建
我尝试了不带'pandas.Series'的代码,只返回一个整数,行索引正确,并且其类型始终为{int64}。
怎么了?
答案 0 :(得分:1)
在当前实现中,在第一列/行上两次应用func调用,以确定它可以采用快速还是慢速代码路径。如果func具有副作用,这可能导致意外的行为,因为它们将对第一列/行生效两次。