猿问

对 Pandas 列中的列表进行操作

我在 Pandas 列中有列表。


我想使用 lambda 函数对该列执行操作。


它显示一个错误,我不明白为什么。


感谢任何帮助。


import pandas as pd

from scipy import stats



df=pd.DataFrame({'indx':[1,2], 'vals':[[822.0, 855.0, 837.0],[692.0, 758.0, 818.0]]})



#Works

stats.linregress([1,2,3], [1,2,3])


#Works

df.apply(lambda x: stats.linregress([1,2,3], [1,2,3]))


#Works

df.apply(lambda x: stats.linregress([1,2,3], [822.0, 855.0, 837.0]))



#Fails

df.apply(lambda x: stats.linregress([1,2,3], np.array(x).astype(np.float)))



#Harder example

df2=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)))



红颜莎娜
浏览 298回答 1
1回答

慕码人8056858

尝试显式索引列vals并应用于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
随时随地看视频慕课网APP

相关分类

Python
我要回答