【发布时间】:2022-01-23 23:40:15
【问题描述】:
我目前有两个 DataFrame,一个有一个质量列表(列为'mass_pos' 列):
entry mass Precursor Monoisotopic mass_pos masses match
0 KGTLP 110 KGTLP 581.69 691.69 True
1 KGTLP 125 KGTLP 581.69 706.69 True
2 KGTLP 133 KGTLP 581.69 714.69 True
3 KGTLP 139 KGTLP 581.69 720.69 True
4 KGTLP 153 KGTLP 581.69 734.69 True
... ... ... ... ... ...
355675 GTKKP 42 GTKKP 596.70 638.70 True
355676 GTKKP 43 GTKKP 596.70 639.70 True
355677 GTKKP 210 GTKKP 596.70 806.70 True
355678 GTKKP 226 GTKKP 596.70 822.70 True
355679 GTKKP 0 GTKKP 596.70 596.70 True
另一个DataFrame如下所示:
Mass
0 586.672
1 798.780
2 690.780
3 400.000
4 662.000
如您所见,我使用np.isclose 来查看第二个DataFrame 中是否有一个值在第一个DataFrame 中'mass_pos' 值的某个容差范围内,然后将布尔值附加到第一个DataFrame df。我就是这样做的:
tolerance = tol_in #provides margin of error
match_mass = lambda x: np.any(np.isclose(x, mass_q_sequence['Mass'], atol=tolerance))
df_seq2['masses match'] = df_seq2['mass_pos'].apply(match_mass)
df_seq2 = df_seq2[df_seq2['masses match'] == True] #remove all false rows from df
我意识到我需要计算一个 ppm 误差,这涉及到找到 'mass pos' 和 'mass' 值之间的误差,因此简单的布尔输出不再足够。有没有办法报告这些值之间的差异,或者将第二个 df 的匹配值附加到满足布尔值的第一个 df?
基本上我只需要报告第二个 df 中的什么值满足第一个中的布尔值。
【问题讨论】:
标签: python pandas dataframe numpy