通过包含特殊字符连字符“”的列标签访问DataFrame元素失败

2024-10-17 08:29:09 发布

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

所以我有一个

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是正常的,如何用excel表中动态找到/定位的“Bus Signalname”元素替换硬编码的b=(行[7])。有哪些方法可以做到这一点

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

不起作用


Tags: columnsofinloopdfforreadcolumn
2条回答

@Valdi_-Bo

多谢各位。在循环中,两者都是

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

df['Bus-Signalname'][i]

工作

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

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

  • 之前的表达是df.Bus,但df可能没有表达 列,因此引发异常
  • 之后发生的(Signalname)预计是一个变量, 但是你可能没有这样的变量,这是另一个原因 这可能会导致异常

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

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

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

访问数据帧中的元素的更为泛泛的语法是:

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

其中,i是相关行的索引,Bus Signalname是列名

相关问题 更多 >