【发布时间】:2017-10-22 07:55:39
【问题描述】:
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 发布解决方案,但我绝对需要将行值和列名存储在 variables 中。
我尝试过使用eval 之类的方法来打印变量中的值,但无济于事。如果我问了一些不可能实现的问题,我提前道歉。
预期输出将是一个空数据框,因为当代码迭代其键是列名的唯一现有行值的字典时,df = df[df.var == k] 等效于 df = df[df.this == 'fruit'] 和 df = df[df.this == 'vegetable'] '这个'
【问题讨论】:
-
你能添加预期的输出吗
-
答案是肯定的……无论你想做什么,答案都是肯定的! ...问题是,我无法弄清楚您要做什么。请提供一些内容,向我们展示您期望的结果。
-
除非我们正确理解问题,否则在编码中没有什么是不可能的。
-
@Bharathshetty 添加了它。我想要完成的想法是,使用 VARIABLES 作为行值和列名。没有得到预期的输出。
-
不要使用
.使用像df[var_name]这样的索引。看看这个stackoverflow.com/questions/46861214/…
标签: python pandas variables dataframe