所以我有一个
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]
工作。