【发布时间】:2019-08-14 20:49:43
【问题描述】:
我有以下代码:
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
所以我有一个额外的迭代和类型的变化,这很奇怪。 蟒蛇3.6;熊猫 0.25.0,Pycharm PyCharm 2019.2(专业版) 构建 #PY-192.5728.105,构建于 2019 年 7 月 23 日
我试过没有'pandas.Series'的代码,只返回一个整数,行索引是正确的,它的类型总是{int64}。
怎么了?
【问题讨论】:
-
我相信
apply方法在实际循环之前运行了测试/优化。这就是您看到两个0值的原因。 -
IIUC,github 他们解决了您对“额外”迭代的担忧
-
非常感谢您的参考,我的头痛好多了:)!然而,这是主题的新变体,因为它现在是上下文相关的。现在我明白'这是预期的'见github。也许我错了,但在过去,编程并不意味着预期的意外行为。 :) 至少,在这种情况下,row.name 需要折旧。
标签: python pandas lambda apply