为了账号安全,请及时绑定邮箱和手机立即绑定

对 Pandas 列中的列表进行操作

对 Pandas 列中的列表进行操作

红颜莎娜 2022-01-18 17:19:55
我在 Pandas 列中有列表。我想使用 lambda 函数对该列执行操作。它显示一个错误,我不明白为什么。感谢任何帮助。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贡献1803条经验 获得超6个赞

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


查看完整回答
反对 回复 2022-01-18
  • 1 回答
  • 0 关注
  • 258 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号