数据帧循环

2024-09-27 09:34:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我被下面的代码困住了。基本上,我使用循环变量'analyticalname'和'fedbatchname'遍历2个数据帧的第一列。如果这两个变量在每个dataframe中找到匹配项,那么我想基于循环变量的值访问dataframe的元素。然而,当我运行代码时,我得到一个键错误,它起源于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']

编辑:这是两个数据帧的一些示例数据,我很抱歉漏掉了。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                                                  

Tags: csv数据indataframeforifpdaggregate
1条回答
网友
1楼 · 发布于 2024-09-27 09:34:00

使用^{}with rename column在输出DataFrame中避免它,只从fedbatchdata中选择列RUN_NUMBER

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

相关问题 更多 >

    热门问题