我有一些显微镜载玻片的实验数据。每一张幻灯片我都拍了很多照片,每张照片上都有很多标本。我想知道每一张幻灯片都有很多样本:
例:在幻灯片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

python - 通过添加观察值来减少数据框的行-LMLPHP
我可以得到部分答案,但这不是我所需要的,因为我仍然需要为每张幻灯片加上样本编号:
df.groupby(['Slide','Image']).max()

python - 通过添加观察值来减少数据框的行-LMLPHP

最佳答案

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/

10-11 07:41
查看更多