我有一些显微镜载玻片的实验数据。每一张幻灯片我都拍了很多照片,每张照片上都有很多标本。我想知道每一张幻灯片都有很多样本:
例:在幻灯片0上,我总共有四个样本(图1中有三个,图2中有一个):
from pandas import DataFrame, Series
import seaborn as sns
data = {'Slide' : [0,0,0,0,0,0,0,0,0, 0,0,0, 9,9,],
'Image' : [1,1,1,1,1,1,1,1,1, 2,2,2, 1,7],
'Specimen' : [1,1,1,1,2,2,3,3,3, 1,1,1, 1,1],
'Foci' : [8,9,7,9,6,9,7,9,6, 6,7,6, 9,6]}
df = DataFrame(data, columns=['Slide','Image','Specimen','Foci'])
df
我可以得到部分答案,但这不是我所需要的,因为我仍然需要为每张幻灯片加上样本编号:
df.groupby(['Slide','Image']).max()
最佳答案
groupby功能允许您像在excel中一样“透视”结果:
df = df.groupby(['Slide','Image']).Specimen.nunique()
函数的作用是:为每张幻灯片提供每张图像的唯一值。然后,可以在此系列中使用.reset_index()将其转换回数据帧。
df.reset_index(inplace=True)
df
Slide Image Specimen
0 0 1 3
1 0 2 1
2 9 1 1
3 9 7 1
如果只想通过幻灯片找到值的和,则可以使用最后一个groupby:
df = df.groupby('Slide').sum()['Specimen']
df
Slide
0 4
9 2
关于python - 通过添加观察值来减少数据框的行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37801272/