>>> df = pd.DataFrame({'num_legs': [4, 2], 'num_wings': [0, 2]},
... index=['dog', 'hawk'])
>>> df
num_legs num_wings
dog 4 0
hawk 2 2
>>> for row in df.itertuples():
... print(row)
...
Pandas(Index='dog', num_legs=4, num_wings=0)
Pandas(Index='hawk', num_legs=2, num_wings=2)
我正在使用pandas.DataFrame.itertuples
解析一个Excel工作表,这将在每次迭代中给我一个pandas.DataFrame
。考虑一下如上所述的每次迭代返回的pandas.DataFrame
。
现在关闭每个数据帧Pandas(Index='dog', num_legs=4, num_wings=0)
,我想使用关键字num_legs
访问值,但是使用相同的值时,我得到以下异常。
TypeError: tuple indices must be integers, not str
有人可以帮助您如何直接使用列标题从数据框中检索数据。
答案 0 :(得分:1)
这里:
for row in df.itertuples():
print(row.num_legs)
# print(row.num_wings) # Other column values
# Output
4
2
答案 1 :(得分:1)
您可以使用iterrows()
,
for u,row in df.iterrows():
print(u)
print (row)
print (row['num_legs'])
O / P:
dog
num_legs 4
num_wings 0
Name: dog, dtype: int64
4
hawk
num_legs 2
num_wings 2
Name: hawk, dtype: int64
2
答案 2 :(得分:0)
使用变量时遇到相同的错误。
v = 'num_legs'
for row in df.itertuples():
print(row[v])
TypeError: tuple indices must be integers or slices, not str
要使用df.itertuples()
并将属性名称用作变量。
v = 'num_legs'
for row in df.itertuples():
print(getattr(row, v))
最后df.itertuples()
比df.iterrows()
快。