我有一个数据框,其中有几行属于同一组。我现在想将每组一行添加到新的数据框中,并使用旧的每一列的中值。因此,我编写了以下代码:我转到DF中的每一行并查找是否已经处理了组名。如果不是,我想将中位数写入新的DF
`

for i in df2.index:
    prot=str(df2.loc[i, 'Proteins'])


    if prot in c:
        pass

    else:

        c.append(prot)
        temp=df2[df2['Proteins'].apply(lambda x: x == prot)]
        df3.loc[i, 'Gene Names']=temp.loc[i, 'Gene Names']
        df3.loc[i, 'Proteins']=temp.loc[i, 'Proteins']
        df3.loc[i, 'Median 0']=temp['H/L 0'].median()
        df3.loc[i, 'Median 1']=temp['H/L 1'].median()
        df3.loc[i, 'Median 2']=temp['H/L 2'].median()
        df3.loc[i, 'Median 3']=temp['H/L 3'].median()
        df3.loc[i, 'Median 4']=temp['H/L 4'].median()
        df3.loc[i, 'Median 5']=temp['H/L 5'].median()
        df3.loc[i, 'Median 6']=temp['H/L 6'].median()
        df3.loc[i, 'Median 7']=temp['H/L 7'].median()
        df3.loc[i, 'Median 8']=temp['H/L 8'].median()
        df3.loc[i, 'Median 9']=temp['H/L 9'].median() `


数据框如下所示:

    A  B  C  D
    XX 2  2  2
    Y  4  4  4
    YX 2  2  2
    XX 2  3  2

Now it should collapse into the new data frame:

    A  B  C  D
    XX 2 2.5 2
    Y  4  4  4
    YX 2  2  2
 

But if i do this: it raises my an error:

KeyError: 'the label [2311] is not in the [index]'


我以为我通过用df3.loc[i, 'column']=XXX分配索引来创建索引
感谢您的任何建议。

最佳答案

您是否尝试实现groupby

df.groupby('A').median()


     B C D
一种
XX 2.0 2.5 2.0
是4.0 4.0 4.0
YX 2.0 2.0 2.0

关于python - Python:在 Pandas 中将值从一帧写到另一帧不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47220773/

10-12 17:02