如果组少于3次,则对dataframe1中的出现次数进行计数,然后在dataframe2中搜索同一组并添加到dataframe3中

时间:2019-06-24 18:57:25

标签: python pandas dataframe

计算dataframe1中的出现次数,如果一个组发生的次数少于3次,则在dataframe2中搜索相同的组并将该信息添加到dataframe3中

dataframe1看起来像这样:

import pandas
import numpy as np


df
           Strain  Clade
0           BC187    1.0
1           L1374    1.0
2         YJM1332    1.0
3          YPS128    2.0
4          YPS606    2.0
5         YJM1273    2.0
6   UWOPS03.461.4    3.0
7   UWOPS05.217.3    3.0
8   UWOPS05.227.2    3.0
9             Y12    4.0
10       DBVPG604    5.0
11     GE14S01.7B    6.0
12        YJM1388    4.0

我可以这样计算发生次数:

byclade = df.groupby('Clade').aggregate(np.count_nonzero)


print(byclade)
       Strain
Clade        
1.0         3
2.0         3
3.0         3
4.0         2
5.0         1
6.0         1

并且我可以对dataframe1进行子集处理,以仅列出小于3的出现次数:


clades = byclade[byclade.Strain <3].index

print(df[df['Clade'].isin(clades)])
        Strain  Clade
9          Y12    4.0
10    DBVPG604    5.0
11  GE14S01.7B    6.0
12     YJM1388    4.0

现在-我需要使用Clade列信息来搜索dataframe2(df2),并将每个代表少于3次的clade的行添加到新数据框中-

df2
          Strain Clade
0           FGXd     1
1          ZP860     1
2        YJM1447     3
3        YJM1415     2
4       CBS2966a     2
5         SM69s1     3
6        YJM1342     6
7        IL.01.b     1
8         SM17s1     6
9           Y9.4     4
10  DBVPG1794.1b     1

所以输出看起来像这样,它是从上面的dataframe2到一个新的dataframe。

df3
          Strain Clade
6        YJM1342     6
8         SM17s1     6
9           Y9.4     4

建议-

0 个答案:

没有答案