Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 按第一个元素、第一个元素和第二个元素等迭代列表_Python_List - Fatal编程技术网

Python 按第一个元素、第一个元素和第二个元素等迭代列表

Python 按第一个元素、第一个元素和第二个元素等迭代列表,python,list,Python,List,我有一个数据帧列表,每个数据帧都有一个分类属性“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

我有一个数据帧列表,每个数据帧都有一个分类属性“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]

这个非常基本的方法是创建一个新的空白列表b,遍历列表a中的所有项目,向每个元素添加累积值,然后继续追加到b,这样可以得到结果(itertools方法除外)


Python3.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]

答案是这样的:

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是熊猫模块

欢迎使用堆栈溢出!为您已经尝试过的内容添加一些代码,这将对您有所帮助,以便我们知道如何最好地帮助您查看
itertools.acculate
。我想我应该以不同的方式问这个问题-我用一个更明确的示例更新了它-不过感谢您对以前版本的回答!分类属性“landType”是否为属性?你是说专栏吗?你能分享数据帧的样子吗?请参阅:。考虑到以前的迭代是什么意思?在我看来,你只是在合并列,然后计算唯一值的数量,对吗?
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]))]