0
讓我們來看看這個小例子:意外的結果
In [208]:
L={'A':[[1,2]],
'B':[[3,4], [5,6]]}
df=pd.DataFrame.from_dict(dict(L), orient="index").stack().reset_index(level=0)
df['val']=None
print 'before apply. \n\n', df
f=lambda x: [x[0], x[1][0], x[1][1]]
print '\nafter apply. \n\n', df.apply(f, axis=1)
before apply.
level_0 0 val
0 A [1, 2] None
0 B [3, 4] None
1 B [5, 6] None
after apply.
level_0 0 val
0 [1, 2] 1 2
0 [3, 4] 3 4
1 [5, 6] 5 6
奇怪!該lambda
函數應該返回的每一行list
爲:第1行,得到的應該是['A', 1, 2]
,因此,apply()
預期的行爲應該是:
level_0 0 val
0 A 1 2
0 B 3 4
1 B 5 6
有什麼事,我誤會了約apply()
?
「故事的士氣」是最好:) – furas
好點。 '0'索引實際上來自'stack()'步驟,因此該部分很糟糕。但我想一些重命名會讓事情正確。 –