我有一个数据框,其中有几行属于同一组。我现在想将每组一行添加到新的数据框中,并使用旧的每一列的中值。因此,我编写了以下代码:我转到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/