【问题标题】:using query in a pandas dataframe在熊猫数据框中使用查询
【发布时间】:2020-11-10 09:11:26
【问题描述】:

假设我有下表: Original dataframe

我添加了一个名为“status”的列,它是对 (gender, Senior_management),基本上是对:[ (Female, True), (Male, True), (Male, False), ...]等等。 假设我正在寻找某些条件,所以我定义了列表:

conditions = [(Female, True), (Male, False)]

我现在的目标是使用查询创建一个新数据框,该数据框仅包含有条件的值。我目前有(注意 MyDataframe 是旧的,我正在尝试将其保存为新的同时保留旧的):

NewDataFrame = MyDataFrame.query('status in @conditions')
NewDataframe.head()

这只会导致数据框的列名: Flawed_result 这里发生了什么?以及如何解决?

【问题讨论】:

  • 使用虚拟数据框,它对我有用。您如何创建“状态”列?也可能是 True 和 False 是字符串。
  • 有趣!所以同样的代码对你有用吗?我通过以下方式创建我的新专栏:MyDataFrame['status'] = MyDataFrame.apply(lambda row: "({},{})".format(row['Gender'],row['Senior Management']), axis=1) 我检查并成功创建了专栏。任何想法为什么这是一个问题?注意:当我尝试使用 print(NewDataFrame) 打印数据框时,输出为:空数据框(后跟列名列表)
  • 这就是它不起作用的原因。看我的回答。 @初学者101
  • 另外,如果您觉得有帮助,请考虑accepting the answer! @初学者101
  • 对不起,我不明白答案。你可以再详细一点吗?我看不出类型有什么影响?

标签: python pandas dataframe data-analysis


【解决方案1】:

看起来status 列是字符串类型,因为当您使用格式时,您将表达式转换为字符串,因此它永远不会与conditions 元组列表匹配,因此您可以尝试定义conditions 字符串列表:

import pandas as pd

df=pd.DataFrame({'gender':['Male','Female','Male','Female'],'Senior':[True,True,False,False]})
df['status']=df.apply(lambda row: "({},{})".format(row['gender'],row['Senior']), axis=1)
df
#   gender  Senior          status
#0    Male    True     (Male,True)
#1  Female    True   (Female,True)
#2    Male   False    (Male,False)
#3  Female   False  (Female,False)
conditions = ['(Female,True)', '(Male,False)']

df.query('status in @conditions')

输出:

   gender  Senior         status
1  Female    True  (Female,True)
2    Male   False   (Male,False)

如果你想作为一个元组而不是一个字符串,你可以尝试this来获取元组,然后进行查询

df=pd.DataFrame({'gender':['Male','Female','Male','Female'],'Senior':[True,True,False,False]}) 

df['status']=list(zip(df.gender, df.Senior))

conditions = [('Female',True), ('Male',False)]
df.query('status in @conditions')

【讨论】:

  • 我使用字符串来定义条件,它成功了!十分感谢你的帮助! :)
猜你喜欢
  • 2021-10-25
  • 1970-01-01
  • 2020-02-25
  • 1970-01-01
  • 2021-08-07
  • 2017-08-04
  • 2017-12-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多