[英]Pandas Dataframe looping
I'm stuck with the code below.我被下面的代码困住了。 Basically, I am looping through the first column of 2 dataframes with the loop variables 'analyticalname' and 'fedbatchname'.基本上,我正在使用循环变量“analyticalname”和“fedbatchname”循环遍历 2 个数据帧的第一列。 If these two variables find a match in each dataframe, then I want to access that element of the dataframe based on the value of the loop variable.如果这两个变量在每个数据帧中找到匹配项,那么我想根据循环变量的值访问数据帧的该元素。 When I run the code, however, I get a key error that originates at the line after the if statement.但是,当我运行代码时,我收到一个关键错误,该错误源自 if 语句之后的行。 In essence, I am asking how to access an element of a dataframe based on a loop variable.本质上,我问的是如何基于循环变量访问数据帧的元素。 Any suggestions?有什么建议?
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: Here is some sample data for both dataframes, I apologize for leaving that out.编辑:这是两个数据帧的一些示例数据,我很抱歉将其遗漏。 The fedbatch dataframe is meant to be empty, I am trying to copy the values from the analytical dataframe into the fedbatch dataframe. 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
Use merge
with rename column for avoid it in output DataFrame
with select only column RUN_NUMBER
from fedbatchdata
:使用merge
与它的输出为避免重命名列DataFrame
与选择只列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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.