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

按第一个元素然后第一个和第二个元素等迭代列表

按第一个元素然后第一个和第二个元素等迭代列表

元芳怎么了 2022-07-05 19:43:56
我有一个数据框列表,每个数据框都有一个分类属性“landType”。df_list = [df1,df2,df3]df1.landType.unique() == A,Bdf2.landType.unique() == Bdf3.landType.unique() == B,C我想创建一个新列表,其中包含唯一值的数量,但考虑到以前的迭代,即:len(df1.landType.unique()) == 2len(df1 AND df2.landType.unique()) == 2len(df1 AND df2 AND df3.landType.unique()) == 3output_list = [2,2,3]
查看完整描述

3 回答

?
眼眸繁星

TA贡献1873条经验 获得超9个赞

Python 3.8 中的新赋值表达式可用于保持x到目前为止看到的所有 s 的运行总数。


>>> a = [1, 2, 3]

>>> y = 0

>>> [(y := y + x) for x in a]

[1, 3, 6]

新语法的这种应用概括了itertools.accumulate已经做的事情。


>>> from itertools import accumulate

>>> list(accumulate(a))

[1, 3, 6]


查看完整回答
反对 回复 2022-07-05
?
慕村9548890

TA贡献1884条经验 获得超4个赞

答案最终是这样的:

out_put_list = [len(pd.concat(df_list[y][0:i+1]).reset_index().drop('index',axis=1)['landType'].unique())
                        for i in range(len(df_list[y]))]

pd 是熊猫模块


查看完整回答
反对 回复 2022-07-05
?
温温酱

TA贡献1752条经验 获得超4个赞

这种拥有一个新的空白列表 b 的非常基本的方法,遍历列表 a 中的所有项目,将累积值添加到每个元素并继续附加到 b 将为您提供结果(除了 itertools 方法)


a = [1,2,3]

b = [] 

acum = 0

for i in a:

    b.append(i+acum)

    acum += i

print (b)

[1, 3, 6]


查看完整回答
反对 回复 2022-07-05
  • 3 回答
  • 0 关注
  • 147 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

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

帮助反馈 APP下载

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

公众号

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