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

我有一个数据框列表,每个数据框都有一个分类属性“landType”。


df_list = [df1,df2,df3]


df1.landType.unique() == A,B

df2.landType.unique() == B

df3.landType.unique() == B,C

我想创建一个新列表,其中包含唯一值的数量,但考虑到以前的迭代,即:


len(df1.landType.unique()) == 2

len(df1 AND df2.landType.unique()) == 2

len(df1 AND df2 AND df3.landType.unique()) == 3


output_list = [2,2,3]


元芳怎么了
浏览 148回答 3
3回答

眼眸繁星

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]

慕村9548890

答案最终是这样的: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 是熊猫模块

温温酱

这种拥有一个新的空白列表 b 的非常基本的方法,遍历列表 a 中的所有项目,将累积值添加到每个元素并继续附加到 b 将为您提供结果(除了 itertools 方法)a = [1,2,3]b = [] acum = 0for i in a:    b.append(i+acum)    acum += iprint (b)[1, 3, 6]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python