我有一个数据框列表,每个数据框都有一个分类属性“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]
慕村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 是熊猫模块
温温酱
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]
添加回答
举报
0/150
提交
取消
