как создать оператор for для выбора строк в таблице Excel по имени i

#python #excel #pandas #loops #for-loop

#python #excel #панды #циклы #for-цикл

Вопрос:

Я хочу использовать pandas для чтения листа Excel и печати строк, соответствующих имени. Пока мой код работает для вызова одного имени:

 import pandas as pd 

Data = pd.read_excel("C:\Users\Ashley\Eyes Trial Data Center.xlsx", sheet_name='Pipeline', header=None)

Advm = Data.loc[(Data[0]=='ADVM')]
print(Advm)
  

который возвращает данные из моей книги только для указанного имени:

 0                  1  ...         3               4
1  ADVM     ADVM-022 OPTIC  ...   Phase I  Catalyst Soon?
2  ADVM  ADVM-022 INFINITY  ...  Phase II  Catalyst Soon?
  

Похоже, это не работает, когда я добавляю оператор for, чтобы просмотреть все имеющиеся у меня имена:

 import pandas as pd 

Data = pd.read_excel("C:\Users\Ashley\Eyes Trial Data Center.xlsx", sheet_name='Pipeline', header=None)
stocks = pd.read_excel("C:\Users\Ashley\Eyes Trial Data Center.xlsx",sheet_name='Tickers', header=None)

for i in stocks:
        t = Data.loc[(Data[0]==i)]
        print(t)
  

который возвращает:

 [2 rows x 5 columns]
Empty DataFrame
Columns: [0, 1, 2, 3, 4]
Index: []
  

Мне было интересно, что я мог бы сделать, чтобы исправить это. Таблица данных содержит несколько строк с одинаковым именем. Таблица запасов содержит только одно из каждого имени. Я не хочу изменять данные ни в том, ни в другом, просто для циклического извлечения данных каждого имени. Спасибо!

Я использовал этот сайт для справки: https://datatofish.com/select-rows-pandas-dataframe /

Комментарии:

1. вы уверены, что имена столбцов в stocks равны значениям в Data[0]?

Ответ №1:

Возможно, вы уже поняли это.

 import pandas as pd 

Ticklist = pd.read_excel("C:\Users\Ashley\Eyes Trial Data Center.xlsx",sheet_name='Tickers', header=None)
stocks = Ticklist.values.ravel()

Data = pd.read_excel("C:\Users\Ashley\Eyes Trial Data Center.xlsx", sheet_name='Pipeline', header=None)

for i in stocks:
    t = Data.loc[(Data[0]==i)]
    print(t)
  

Не совсем понимаю, почему, но функция ravel() была необходима для корректной работы части i в stocks.