计算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
建议-