使用列值从Pandas DataFrame获取数据

时间:2019-02-19 11:04:28

标签: python pandas dataframe

>>> 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

有人可以帮助您如何直接使用列标题从数据框中检索数据。

3 个答案:

答案 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()快。