Я застрял в коде ниже. В принципе, я прохожу через первый столбец из 2 кадров данных с аналитическими именами циклов и "fedbatchname". Если эти две переменные находят совпадение в каждом фрейме данных, я хочу получить доступ к этому элементу фрейма данных на основе значения переменной цикла. Однако, когда я запускаю код, я получаю ключевую ошибку, которая возникает в строке после оператора if. По сути, я спрашиваю, как получить доступ к элементу фрейма данных, основанному на переменной цикла. Какие-либо предложения?
import pandas as pd
analyticaldata = pd.read_csv('SE-HPLC.csv', usecols = ['Sample ID','%
Aggregate','% Monomer','% Fragment']) #loading data into pandas DataFrame
fedbatchdata = pd.read_csv('Culture Day Sheet.csv',usecols =
['RUN_NUMBER','% Aggregate','% Monomer','% Fragment'])
for analyticalname in analyticaldata['Sample ID']: #for each element in
first column of SE-HPLC worksheet
for fedbatchname in fedbatchdata['RUN_NUMBER']: #for each element in first column of Culture Day worksheet
if analyticalname == fedbatchname: #if any of the names match
fedbatchdata.ix[fedbatchdata.fedbatchname,'% Aggregate'] = analyticaldata[analyticalname]['% Aggregate']
fedbatchdata.ix[fedbatchdata.fedbatchname,'% Monomer'] = analyticaldata.ix[analyticalname,'% Monomer']
fedbatchdata.ix[fedbatchdata.fedbatchname,'% Fragment'] = analyticaldata.ix[analyticalname,'% Fragment']
EDIT: Вот некоторые примеры данных для обоих кадров данных, я приношу свои извинения за это. Ядро fedbatch должно быть пустым, я пытаюсь скопировать значения из аналитического фрейма в фреймворк fedbatch.
Analytical dataframe:
SAMPLE_ID: % Aggregate % Monomer % Fragment
A 2 4 1.5
B 1 4 6
C 5 5 2.1
D 3 7.1 10
Fed Batch Dataframe:
RUN_NUMBER: % Aggregate % Monomer % Fragment
B
A
C
D
Используйте merge
с столбцом переименования, чтобы избежать его в выводе DataFrame
с только столбцом RUN_NUMBER
fedbatchdata
: RUN_NUMBER
из fedbatchdata
:
df = (fedbatchdata[['RUN_NUMBER']]
.merge(analyticaldata.rename(columns={'Sample ID':'RUN_NUMBER'}),
on=['RUN_NUMBER'],
how='left'))
print (df)
RUN_NUMBER % Aggregate % Monomer % Fragment
0 B 1 4.0 6.0
1 A 2 4.0 1.5
2 C 5 5.0 2.1
3 D 3 7.1 10.0
analyticaldata.merge(fedbatchdata, left_on=['Sample ID'], right_on=['RUN_NUMBER'])