迭代 4 个 pandas 数据框列并将它们存储到 4 个列表中,其中一个 for 循环而不是 4 个 for 循环

Posted

技术标签:

【中文标题】迭代 4 个 pandas 数据框列并将它们存储到 4 个列表中,其中一个 for 循环而不是 4 个 for 循环【英文标题】:Iterate over 4 pandas data frame columns and store them into 4 lists with one for loop instead of 4 for loops 【发布时间】:2020-06-29 10:58:20 【问题描述】:

我目前正在研究 Python 中的 pandas 结构。我编写了一个从 Pandas 数据框中提取数据并将其存储在列表中的函数。代码正在运行,但我觉得有一部分我可以在一个 for 循环中而不是四个 for 循环中编写。下面我给大家举个例子。这部分代码的想法是从 pandas 数据框中提取四列到四个列表中。我用 4 个单独的 for 循环完成了它,但我想要一个循环来做这件事。

col1,col1,col1,col1 = [],[],[],[]

for j in abc['col1']:
    col1.append(j)

for k in abc['col2']:
    col2.append(k)

for l in abc['col3']:
    col3.append(l) 

for n in abc['col4']:
    col4.append(n)

我的想法是编写一个执行所有代码的 for 循环。我试图做这样的事情,但它不起作用。

col1,col1,col1,col1 = [],[],[],[]

for j,k,l,n in abc[['col1','col2','col3','col4']]
    col1.append(j)
    col2.append(k)
    col3.append(l) 
    col4.append(n)

你能帮我把四个for循环包装成一个吗?非常感谢您的帮助!

【问题讨论】:

【参考方案1】:

您根本不需要使用循环;您可以直接将每一列转换为列表。

list_1 = df["col"]to_list()

看看这个previous question。

【讨论】:

谢谢这个函数 to_list() 也对我有用。【参考方案2】:

将 panda 数据框视为列表通常有效,但对性能非常不利。我会考虑改用 iterrows() 函数。 这将在以下示例中起作用:

col1,col2,col3,col4 = [],[],[],[]

for index, row in df.iterrows():
    col1.append(row['col1'])
    col2.append(row['col2'])
    col3.append(row['col3'])
    col4.append(row['col4'])

【讨论】:

谢谢,这正是我所需要的。【参考方案3】:

使用pandas.values 然后numpy.ndarray.to_list() 可能更容易:

col = ['col1','col2','col3']
data = []*len(col)
for i in range(len(col)):
   data[i] = df[col(i)].values.to_list()

【讨论】:

以上是关于迭代 4 个 pandas 数据框列并将它们存储到 4 个列表中,其中一个 for 循环而不是 4 个 for 循环的主要内容,如果未能解决你的问题,请参考以下文章

如何将 pandas 数据框列转换为本机 python 数据类型?

如何迭代熊猫数据框列中的元素?

Python:遍历数据框列,检查存储在数组中的条件值,并将值获取到列表中

以字符串形式存储在 Pandas 数据框列中的解析列表

将列表列表中的值映射到 Pandas 数据框列

分别绘制所有 pandas 数据框列