python数据帧按列值筛选列,列名为user inpu

2024-10-01 05:03:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧数据框

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

我可以通过过滤列domain==3来创建一个新的子集dataframe

^{pr2}$

我想用一个变量来代替列名,比如print'%s'%variable 因为有时候我不知道确切的名字。它可能是域或Dom,所以我会用这种方式

custome_rawinput='domain'

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

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

有人能帮我吗?在

谢谢


Tags: 数据dataframedfdomain名字variable子集dom
2条回答

您可以使用[]用标签访问它。You can read more about this if you're interested。本质上,您只需将其视为普通的python字典,请执行以下操作:

rawinput='domain'
tempdf = df[ df[rawinput] == 3] 

您可以在dataframe上使用subscript按字符串选择列,在您的例子中-

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

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

^{pr2}$

示例/演示-

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

相关问题 更多 >