我在 Pandas 列中有列表。我想使用 lambda 函數(shù)對(duì)該列執(zhí)行操作。它顯示一個(gè)錯(cuò)誤,我不明白為什么。感謝任何幫助。import pandas as pdfrom scipy import statsdf=pd.DataFrame({'indx':[1,2], 'vals':[[822.0, 855.0, 837.0],[692.0, 758.0, 818.0]]})#Worksstats.linregress([1,2,3], [1,2,3])#Worksdf.apply(lambda x: stats.linregress([1,2,3], [1,2,3]))#Worksdf.apply(lambda x: stats.linregress([1,2,3], [822.0, 855.0, 837.0]))#Failsdf.apply(lambda x: stats.linregress([1,2,3], np.array(x).astype(np.float)))#Harder exampledf2=pd.DataFrame({'indx':[1,2], 'vals':[[822.0, 855.0],[692.0, 758.0, 818.0, 855.0, 837.0]]})df2.apply(lambda x: stats.linregress([i for i in range(1,len(x)+1)], np.array(x).astype(np.float)))
1 回答

慕碼人8056858
TA貢獻(xiàn)1803條經(jīng)驗(yàn) 獲得超6個(gè)贊
嘗試顯式索引列vals并應(yīng)用于axis=1:
df.apply(lambda x: stats.linregress([1,2,3], x['vals']), axis=1)
[出去]
0 (7.5, 823.0, 0.4539206495016018, 0.70004990665...
1 (63.0, 630.0, 0.9996222851612186, 0.0174980968...
dtype: object
和
df2.apply(lambda x: stats.linregress(np.arange(1, len(x['vals']) + 1), x['vals']), axis=1)
[出去]
0 (33.0, 789.0, 1.0, 0.0, 0.0)
1 (38.7, 675.9, 0.9166087820733272, 0.0285434179...
dtype: object
添加回答
舉報(bào)
0/150
提交
取消