Получить данные из Pandas DataFrame, используя значения столбцов - PullRequest
0 голосов
/ 19 февраля 2019
>>> 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)

Я анализирую лист Excel, используя pandas.DataFrame.itertuples, который даст мне 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 голосов
/ 19 февраля 2019

вы можете использовать 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
0 голосов
/ 19 февраля 2019

Я столкнулся с той же ошибкой при использовании переменной.

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().

0 голосов
/ 19 февраля 2019

Здесь:

for row in df.itertuples():
    print(row.num_legs)
  # print(row.num_wings)   # Other column values

# Output
4
2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...