python Dataframe过滤列按列值和列名称是用户输入

时间:2015-08-15 02:03:05

标签: python

我有一个数据帧数据df

0   Easting Northing  domain grade
1   3900     4100      2    0.02
2   3910     4100      3    0.01
3   3910     4100      3    0.01
4   3910     4100      2    0.01

我可以通过过滤列域== 3

来创建新的子集数据帧
tempdf=df[df.domain==3]

我想要的是我想使用变量替换列名,例如print'%s'%变量    因为有时我不知道确切的名字。它可能是Domain或Dom所以我会给出这样的手动

custome_rawinput='domain'

tempdf=df[df.'%s'%custome_rawinput==3]

但这会给我一个错误(语法无效)

任何人都可以帮助我吗?

由于

2 个答案:

答案 0 :(得分:0)

您可以在数据框上使用subscript来按字符串选择列,在您的情况下 -

tempdf=df[df['%s'%custome_rawinput]==3]

虽然其中的'%s'确实是不必要的,但您可以直接使用下面的内容,因为custome_rawinput已经是字符串 -

tempdf=df[df[custome_rawinput]==3]

示例/演示 -

In [4]: inp = 'A'

In [5]: df[df[inp] == 1]
Out[5]:
   A  B
0  1  2

In [6]: df[df[inp] == 2]
Out[6]:
Empty DataFrame
Columns: [A, B]
Index: []

In [7]: df[df[inp] == 3]
Out[7]:
   A  B
1  3  4

答案 1 :(得分:0)

您可以使用initWithStyle通过标签访问它。 You can read more about this if you're interested。从本质上讲,你只需将它视为普通的python字典,所以:

[]