通过包含特殊字符连字符'-'的列标签访问数据帧元素失败



所以我有一个

df = read_excel(...)

循环确实有效:

for i, row in df.iterrows(): #loop through rows
a = df[df.columns].SignalName[i] #column "SignalName" of row i, is read
b = (row[7]) #column "Bus-Signalname" of row i, taken primitively=hardcoded

访问a是可以的,如何将硬编码的b=(行[7](替换为"动态找到/定位";总线信号名称";元素。有哪些方法可以做到这一点?

b = df[df.columns].Bus-Signalname[i]

不起作用。

要访问整列,请运行:df['Bus-Signalname']。所谓的属性表示法(df.Bus Signalname(将在这里不起作用,因为"-"不允许作为属性名称的一部分。

它被视为减去运算符,因此:

  • 前面的表达式是df.Bus,但df可能没有列,因此抛出异常
  • 之后发生的事情(Signalname(被期望为例如变量,但你可能没有这样的变量,这是另一个原因这可能导致异常

还请注意,然后您编写了[i]。据我所知,i是一个整数,您希望从此列访问元素NoI

请注意,检索到的列是系列,索引仅为与您的整个数据帧相同。

如果索引是默认索引(从0开始的连续数字(,你会成功的。否则(如果索引不包含i的值(你会失败的。

访问DataFrame中的元素的更多pandasonic语法是:

df.loc[i, 'Bus-Signalname']

其中i是所讨论行的索引,总线信号名为列名。

@Valdi_Bo

谢谢。在环路中,两个

df.loc[i, 'Bus-Signalname'] 

df['Bus-Signalname'][i]

工作。

最新更新