首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在csv文件的多列中搜索get请求参数

在csv文件的多列中搜索get请求参数
EN

Stack Overflow用户
提问于 2021-12-10 19:55:24
回答 1查看 84关注 0票数 0

我有这个烧瓶API,在这个API中,用户可以用他们输入的名称执行get请求。问题是,我希望能够在两个不同的列中搜索该名称,但我不知道如何做到这一点,因为这是不起作用的,因为烧瓶说‘不能用多维键索引’:

代码语言:javascript
复制
data = self.data.loc[self.data[['name-english','name_greek']] == name_cap].to_dict()

这就是我要说的部分:

代码语言:javascript
复制
class Search(Resource):
   def __init__(self):
       self.data = pd.read_csv('datacsv')

   def get(self, name):
       name_cap = name.capitalize()
       data = self.data.loc[self.data['name-english'] == name_cap].to_dict()
       # return data found in csv
       return jsonify({'message': data})

所以我想在这两列中搜索,而不是只搜索一列。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-10 21:07:12

似乎您在pandasDataframe语法上有问题,而不是在烧瓶本身。你可能是从熊猫那里得到这个错误的:

ValueError:不能使用多维键进行索引

据熊猫文档报道

.loc[]主要是基于标签的,但也可以与布尔数组一起使用。 允许的输入如下:

  • 单个标签,例如5或“a”(请注意,5被解释为索引的标签,而不是索引上的整数位置)。
  • 标签列表或标签数组,如'a','b','c‘
  • 带有标签的切片对象,例如a:‘F’。
  • 与被切片的轴长度相同的布尔数组,例如True、False、True。
  • 可对齐布尔级数。密钥的索引将在掩蔽之前对齐。
  • 可对齐指数。返回的选择的索引将是输入。
  • 一个带有一个参数(调用系列或DataFrame)的可调用函数,它返回用于索引的有效输出(上面的一个)

在您的示例中,您将self.data[['name-english','name_greek']] == name_cap作为loc的一个参数,这将返回另一个数据帧,而不是True和False数组或布尔序列。

若要基于多列筛选数据,可以使用按位运算符(例如,和):

代码语言:javascript
复制
df.loc[(df["A"] == 1) | (df["B"] == 1)]

或使用已实现的方法isin()

DataFrame中的每个元素是否包含在值中。 返回:布尔值的DataFrame DataFrame,显示DataFrame中的每个元素是否包含在值中。

any()并排

返回是否有任何元素是True,可能在一个轴上。 返回:如果指定了DataFrame或DataFrame,则返回DataFrame;否则返回Series。

这样,您就可以将布尔级数作为参数传递给.loc,例如:

代码语言:javascript
复制
df.loc[ df.isin([1]).any(1)]

另外,一些经常帮助我处理数据格式的东西是使用jupyter来测试一些东西--首先,我认为它更快,你可以在dataframe中花更多的时间来发现新的方法来做你需要的事情。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70309746

复制
相关文章

相似问题

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