- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
import pandas as pd
df = pd.DataFrame(data=np.array([["fruit", 12341], ["vegetable", 45642]]))
df.columns = ['this','result']
这就是数据框的样子
this result
0 fruit 12341
1 vegetable 45642
“this”和“result”是列名称。假设其中一个列名存储为名为“var”的字符串变量
“this”列中的行值“fruit”之一作为键存储在名为“dict”的字典中。
var = 'this'
dict = {'fruit': 'apple', 'vegetable': 'orange'}
我正在尝试执行下面代码中显示的一些子集
for k, v in dict.items():
print(k)
print(type(k)) #<class 'str'>
df = df[df.var == k]
df
我知道已经知道了
df = df[df.this == 'fruit']
df = df[df.this == 'vegetable']
但是行值和列名称将仅存储为字符串变量!无论如何,您可以对行值和列名称为变量
的数据框进行子集化除非你们知道,否则我不确定这是否可能。我不介意是否使用 loc 或 iloc 发布解决方案,但我绝对需要将行值和列名称存储在变量中。
我尝试过使用eval
之类的方法来打印变量中的值,但无济于事。如果我提出了无法实现的要求,我提前表示歉意。
预期输出将是一个空数据帧,因为df = df[df.var == k]
相当于df = df[df.this = = 'fruit']
和 df = df[df.this == 'vegetable']
当代码迭代字典时,其键是列名 ' 的唯一现有行值这个'
最佳答案
使用isin
:
df = df[df[var].isin(dct.keys())]
这消除了循环(好吧,它不会导致空数据帧,但为什么你想要一个空数据帧?)。
请注意,引用具有变量名称的列时不能使用点表示法。您需要使用 [...]
语法。有关在哪里可以使用点符号以及在哪里不能使用点符号的更多信息,请参阅 here .
You cannot use the dot notation to access columns if the column name
- begins with a digit
- contains whitespace characters
- contains operator symbols and punctuation
- conflicts with an existing method name or attribute
The dot notation is similar to accessing object's attributes, and you must follow python's variable naming rules if you want to access them that way. For anything else, you'll have to use
[...]
.For a more detailed view, view the note at the bottom of the documentation.
此外,不要使用 dict
来命名变量,这会掩盖具有相同名称的内置 dict
类。现在您已经使用了它,请使用 del dict
恢复 dict 功能。
关于python - 根据行值对数据框进行子集化,其中行值和列名存储在 VARIABLE 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46871767/
这个问题已经有答案了: When to use single quotes, double quotes, and backticks in MySQL (13 个答案) 已关闭 3 年前。 我正在尝
我需要一个返回某些列值的选择查询。我想要的列以“U_S”开头。 Select * from em 我需要转换上面的查询。 '*' 必须是以下结果(但带有逗号): select COLUMN_NAME
在JPA中设置一对多关系时如何设置外键的列名? 我想将“items_id”的名称更改为“item_id” @OneToMany private List items; 我尝试了以下注释但没有成功: @
我有一个jqGrid列定义如下 name : 'idmycolumn', index : 'idmycolumn', width : 80,
我是否可以编写一个带参数的存储过程,即 mysql 查询,存储过程返回查询的列名? 例如我调用程序: 调用选择器('select * from users') 过程返回列名。使用 informatio
嗨,我刚刚开始学习 sql,我希望使用 concat 将列合并为一个列,但没能做到。我可以在没有 concat 的情况下运行代码,但是当我使用 concat 时,它会给我一个错误代码。谁能告诉我我做错
我们正在使用 java jdk 1.7.0_45,postgresql jdbc 连接器 postgresql-9.3-1100.jdbc41.jar。 这是我们问题的概要,下面粘贴了尽可能多的代码。
import pandas as pd import numpy as np rng = pd.date_range('1/1/2011', periods=6, freq='H') df = pd.
借助 PHP 的 mysqli 扩展,我可以使用 fetch_field() 方法通过 orgname 和 获取列和表的原始(无别名)名称结果中的 orgtable。 PDO 提供了方法getColu
我在 php 中使用 PDO,因此无法使用准备好的语句转义表名或列名。以下是我自己实现它的万无一失的方法吗: $tn = str_replace('`', '', $_REQUEST['tn']);
我想使用 apply 来跨越矩阵的行,并且我想在我的函数中使用当前行的行名。好像不能用rownames , colnames , dimnames或 names直接在函数内部。我知道我可以根据 thi
在编写管理数据的应用程序时,允许最终用户创建或删除最好表示为列的数据类别通常很有用。例如,我正在开发字典构建应用程序;用户可能会决定他们想要向数据添加“备用拼写”字段或其他内容,这可以很容易地表示为另
在我的数据框中,许多列名称以“.y”结尾,如示例所示: dat <- data.frame(x1=sample(c(0:1)), id=sample(10), av1.y = sample(10) ,
在 SQL Server 中,我希望看到 Table_Name 以及数据库中与该 Table_Name 关联的所有列。所以输出应该是这样的: TABLE_NAME COLUMN_N
在我的数据框中,许多列名称以“.y”结尾,如示例所示: dat <- data.frame(x1=sample(c(0:1)), id=sample(10), av1.y = sample(10) ,
在一种情况下,我们动态创建 sql 到 create动态临时表。 table_name 没有问题,因为它是由我们决定的,但是列名是由我们无法控制的来源提供的。 通常我们会使用以下查询检查列名: sel
我有一个数据框,我们可以通过代理 df = pd.DataFrame({'a':[1,0,0], 'b':[0,1,0], 'c':[1,0,0], 'd':[2,3,4]}) 还有一个类别系列 ca
我需要编写一个用户定义的函数,当应用于数据框时,它将返回列位置、列名称、模式和每个变量的类。我能够创建一个返回模式和类的,但是当我包含位置/名称时,我总是收到错误。我一直在这样做, myFunctio
我刚开始使用 QueryDSL 并遇到了问题。是否可以使用列名进行 orderBy?我为 orderBy 动态路径生成找到了这个: Generic querydsl orderBy dynamic p
操作 DataGridView 单元格时,您通常会执行以下操作: MyGrid.CurrentRow.Cells["EmployeeFirstName"].Value = "John"; 这一切都很好
我是一名优秀的程序员,十分优秀!