使用pandas.dataframe.query时,如何引用查询字符串中未命名的dataframe列?我知道我可以通过将列名用倒勾括起来来识别不是有效python变量名的列名。但是,这并不涉及未命名的列。
例如,我想查询dataframe中未命名列包含大于0.5的值的所有行。
我的代码是这样开始的:
import pandas as pd
import numpy as np
array=np.random.rand(10,3)
df=pd.DataFrame(array)
到目前为止还不错,但是当我尝试使用pandas.dataframe.query时,我应该使用什么查询字符串来查找第二列(未命名)中的值大于0.5的行?
我能想到的最接近的事情是
df.query('columns[1]>0.5')
这是完全错误的,因为列[1]返回列号1,并且不引用未命名的列。
我查看了Pandas的文档,包括
https://pandas.pydata.org/docs/reference/api/pandas.dataframe.query.html#pandas.dataframe.query
https://pandas.pydata.org/docs/user_guide/indexing.html#indexing-质疑
有什么想法吗?
2条答案
按热度按时间yrdbyhpb1#
有几种方法可以实现您的目标:
虚拟 Dataframe :
解决方案:
在另一种情况下,如果您使用未命名的列,您可以按如下方式查找dataframe列中的所有行,但请记住,它将保留不匹配的值
NaN
同时显示所有匹配项。w46czmvw2#
解决方案
小结:下面给出了最佳选项。有关所有其他选项,请参阅下文。
df.query('@df[1] > 0.5')
df[df[1] > 0.5]
Pandas中未命名的列将自动命名为0, 1, 2, ...
,其中这些是数字而不是字符串。下面向您展示了实现所需目标的三种主要方法。
选项1:避免重命名列。
选项-1.1:使用
df.query('@df[1] > 0.5')
. 这里我们使用@df
具体说明df
是一个变量。选项1.2:这里我们使用另一个选项
df[df[1] > 0.5]
.选项2.x:重命名数据框的列
df
通过提供dict
:{0: 'A', 1: 'B', 2: 'C'}
.你可以用
df.query()
在这种情况下。选项3:重命名
df
以听写理解为例C#
哪里#
表示列编号。你可以用
df.query()
在这种情况下。输出:
虚拟数据
参考资料
文件:
pandas.DataFrame.query
stackoverflow:如何在pandas中查询数字列名?老Pandas医生:
multiindex-query-syntax
v-13.0