迭代 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 数据类型?