Skip to main content
 首页 » 编程设计

python之系统地遍历 DF 的多列和多行,以跨多列输出不同的列表大小

2025年05月04日13me-sa

我希望遍历此数据框以增加列 ['B'] 和列 ['C'] 的列表大小。这对这个例子并不重要,但这些列表将在每次迭代期间输入到一个函数中。 例如:

df = pd.DataFrame({'A' : ['a','a','b','b'], 
                   'B' : ['1','2','1','2'], 
                   'C' : ['2','3','1','6']}) 

通过遍历此数据框,我希望获得如下内容:

(从 ['B'] 列开始)

[1] 
[1,2] 
[1,2,1] 
[1,2,1,2] 

(然后是列 ['C'])

[2] 
[2,3] 
[2,3,1] 
[2,3,1,6] 

然后这些列表将在每次迭代结束时放入一个函数中,但我遇到的问题是编写一个适当的 for 循环来编写列表生成代码。

我的问题的第二个方面并不那么重要......但如果我也可以迭代地输出 ['A'] 的值,那就太好了列表停止在(对于例如,当遍历列 ['C'] 时,列表 [2,3] 与 ['A'] = 'b' 相关[2,3,1] 的 ['C'] 列中的列表与 ['A'] = 'b' 相关.

非常感谢任何帮助。

请您参考如下方法:

df['B'],df['C']=df[['B','C']].values[::None].T.cumsum(axis=1) 
df.applymap(list) 
Out[1118]:  
     A             B             C 
0  [a]           [1]           [2] 
1  [a]        [1, 2]        [2, 3] 
2  [b]     [1, 2, 1]     [2, 3, 1] 
3  [b]  [1, 2, 1, 2]  [2, 3, 1, 6] 

已更新

df[['B','C']]=df[['B','C']].applymap(list) 
df 
Out[1121]:  
   A             B             C 
0  a           [1]           [2] 
1  a        [1, 2]        [2, 3] 
2  b     [1, 2, 1]     [2, 3, 1] 
3  b  [1, 2, 1, 2]  [2, 3, 1, 6]