首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据存储在向量中的列名设置pandas数据框子集

根据存储在向量中的列名设置pandas数据框子集
EN

Stack Overflow用户
提问于 2019-05-02 21:19:20
回答 2查看 2.2K关注 0票数 2

我从一个网站上抓取数据,该网站构建了一个熊猫数据框架,根据网站上可用的数据,使用不同的列名。我有一个列名的向量,比如:

colnames = ['column1', 'column2', 'column3', 'column5']

这些列是我希望在其中存储抓取的数据的postgres数据库的列。

我遇到的问题是,我不得不设置抓取的方式来获取我需要的所有数据,最终我抓取了一些我不需要的列,这些列不在我的postgres数据库中。这些列不会每次都有相同的名称,因为有些页面有额外的数据,所以我不能简单地排除我不想要的列名,因为我不知道所有这些列名是什么。我的postgres数据库中也会有一些列,这些列的数据不会每次都被抓取。

因此,当我尝试将结果数据帧上传到postgres时,我得到了错误:

代码语言:javascript
复制
psycopg2.errors.UndefinedColumn: column "column4" of relation "my_db" does not exist

这引出了我的问题:

假设一些列可能不存在于数据帧中,我如何使用存储在向量中的列名来子集得到的熊猫数据帧?我尝试过my_dt = my_dt[colnames],它会返回以下错误:

代码语言:javascript
复制
KeyError: ['column1', 'column2', 'column3'] not in index

可重现的例子:

代码语言:javascript
复制
df = pd.DataFrame([[1, 2, 3, 4], [5, 6, 7, 8]], columns = 
['column1', 'column2', 'column3', 'column4'])

subset_columns = ['column1', 'column2', 'column3', 'column5']

test = df[subset_columns]

任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-03 15:59:54

您可以简单地这样做:

代码语言:javascript
复制
colnames = ['column1', 'column2', 'column3', 'column5']

df[df.columns & colnames]
票数 2
EN

Stack Overflow用户

发布于 2019-05-02 22:26:14

我设法找到了修复方法,尽管我仍然不明白是什么导致最初的“键错误”以向量的形式出现,而不仅仅是不是我的数据帧中的列的元素:

代码语言:javascript
复制
df = pd.DataFrame([[1, 2, 3, 4], [5, 6, 7, 8]], columns = 
['column1', 'column2', 'column3', 'column4'])

subset_columns = ['column1', 'column2', 'column3', 'column5']

column_match = set(subset_columns) & set(df.columns)

df = df[column_match]

Out[69]: 
   column2  column1  column3
0        2        1        3
1        6        5        7
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55953419

复制
相关文章

相似问题

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