我有一個數據框列表,每個數據框都有一個分類屬性“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
提交
取消
