对“熊猫”列中列表的操作

狗狗

我在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)))
克里斯·A

尝试显式索引该列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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章