比较熊猫数据框列中的值,以仅返回特定站点唯一的物种

问题描述 投票:1回答:1

这里是python新手。正在研究一个项目,尝试比较3个位置的数据时寻找独特的物种。这是我构建的熊猫数据框:

linktoimageofdataframe编辑:我添加了输出图片,以某种方式列出我时的格式很奇怪:

      index     A     B     C     D     E    F     G    H    I    J    L  \
0        0.0  10.0  14.0   1.0  15.0   5.0  0.0   6.0  0.0  0.0  2.0  0.0   
1        1.0  31.0  12.0   9.0   0.0   0.0  0.0   0.0  2.0  0.0  0.0  1.0   
2        2.0   5.0   4.0   6.0   5.0   5.0  9.0   5.0  6.0  5.0  7.0  0.0   
Total    3.0  46.0  30.0  16.0  20.0  10.0  9.0  11.0  8.0  5.0  9.0  1.0   

         M    N    O    P  
0      0.0  0.0  0.0  0.0  
1      0.0  0.0  1.0  1.0  
2      2.0  1.0  0.0  0.0  
Total  2.0  1.0  1.0  1.0  

种由字母A-P表示。我需要做的是以某种方式比较每个物种的列中的值,并返回一个结果,表明某个物种对于特定站点是否唯一。例如,物种P仅在索引1的位置处发现,因此P在位置1处是唯一的。如果该物种在所有三个位置(例如A和B),则该物种将不返回任何内容。如果一个物种位于两个地点,但不是第三个地点,则情况相同。希望这是有道理的。该网站非常适合帮助我了解有关设置数据帧和python的一般信息,谢谢您可以提供的任何帮助!

python pandas dataframe analysis
1个回答
0
投票

我认为您想要:

df_unique=df.set_index('index',append=True)
uniques=df_unique.mask(df_unique.eq(0)).iloc[:-1].apply(lambda x:x.nunique()==1)
print(uniques)

A    False
B    False
C    False
D    False
E     True
F     True
G    False
H    False
I     True
J    False
L     True
M     True
N     True
O     True
P     True
dtype: bool

然后您可以过滤数据框

df_unique=df_unique.loc[:,uniques].reset_index(level='index')
print(df_unique)

       index     E    F    I    L    M    N    O    P
0        0.0   5.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0
1        1.0   0.0  0.0  0.0  1.0  0.0  0.0  1.0  1.0
2        2.0   5.0  9.0  5.0  0.0  2.0  1.0  0.0  0.0
Total    3.0  10.0  9.0  5.0  1.0  2.0  1.0  1.0  1.0
© www.soinside.com 2019 - 2024. All rights reserved.