首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从列名称列表到df值列表

从列名称列表到df值列表
EN

Stack Overflow用户
提问于 2022-07-02 11:59:27
回答 2查看 43关注 0票数 0

给定代表列名的下列列表:

代码语言:javascript
运行
复制
names = [['a','b'],['c','c'],['b','c']]

和下面的数据文件

代码语言:javascript
运行
复制
df
   a  b  c
0  1  2  6
1  1  3  2
2  4  6  4

我希望生成具有以下功能的与names具有相同维度的列表:

代码语言:javascript
运行
复制
lst = []
for idx, cols in enumerate(names):
  lst.append([])
  for col in cols:
    lst[-1].append(df.iloc[idx][col])

lst:
[[1,2],[2,2],[6,4]

也就是说,names数组指向相关row_idx中从df中提取的列。

我试图避免嵌套循环。

EN

回答 2

Stack Overflow用户

发布于 2022-07-02 12:04:16

可以使用列表选择多个列。

代码语言:javascript
运行
复制
lst = []
for idx, cols in enumerate(names):
    lst.append(df.iloc[idx][cols].tolist())
# or list comprehension
lst = [df.iloc[idx][cols].tolist() for idx, cols in enumerate(names)]
代码语言:javascript
运行
复制
print(lst)

[[1, 2], [2, 2], [6, 4]]
票数 1
EN

Stack Overflow用户

发布于 2022-07-02 16:11:07

正如您所说的,names的长度与dataframe长度相同,您不希望在names上循环,也不想执行嵌套循环。在这种情况下,是否允许在range上循环?

代码语言:javascript
运行
复制
index = range(len(names))

[df.iloc[i][names[i]].tolist() for i in index]
Out[16]: [[1, 2], [2, 2], [6, 4]]

df.loc

代码语言:javascript
运行
复制
[df.loc[i,names[i]].tolist() for i in index]
Out[35]: [[1, 2], [2, 2], [6, 4]]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72838864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档