繁体   English   中英

如果循环熊猫数据框字典

[英]If loop for a dictionary of pandas dataframes

我有一个数据框字典。 我将 dict 定义为 range_,这样当我需要某个数据框时,我可以将其称为 range_[i]。

在此处输入图片说明

对于字典中的每个数据框,我想添加一个额外的列。 所以我所做的是以下内容:

for i in range_selected:
    for index in range_[i].index:
        range_[i].loc[index,'label(1 = fault)'] = ''

现在,我想在这个新列的每一行中添加一个值。 它可以是 0 或 1。我的条件是,如果每个数据帧第一行的 'pdis1' 值 - 第 9-10 行的值小于零,则为新列的每一行附加 1,否则 0. 我试过这个:

for r in range_:
    for index in range_[r].index:
        if range_[r]['pdis1'].iloc[0] - range_[r]['pdis1'].iloc[10]:
            range_[r].loc[index,'label(1 = fault)'] = '1' 

但我得到“IndexError:单个位置索引器越界”

谁能帮我吗? 谢谢

当您尝试访问 DF 中不存在的索引时会发生这种情况。

如果您确定所有数据框都至少有 10 行,那么这应该可行。 如果仍然出现此错误,则表示其中一个 DataFrame 的行数少于 10。 因此,您确定故障的规则无效。

for df in range_.values():
    if df['pdis1'].iloc[0] - df['pdis1'].iloc[10]:
        val = '1'
    else:
        val = '0'
    
    df['label(1 = fault)'] = val

我改变了迭代看起来更像pythonic :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM