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