【问题标题】:Retrieve data from another table using index使用索引从另一个表中检索数据
【发布时间】:2016-03-07 01:05:27
【问题描述】:

我想用 python 和 pandas 处理生物数据。

表 1 由蛋白质对的名称组成。 XX、YY、ZZ、AA是蛋白质的名称。 表2是每种蛋白质的一些数据(值)。

我要计算的是表1中存在的每个蛋白质对的皮尔逊相关系数(PCC),使用表2的数据列表。这是一种类似数据库的方法。

Table 1

Col1 Col2
 XX YY
 XX ZZ
 ZZ AA

Table 2

      XX YY ZZ AA BB CC ...
Data1 10 20 30 40 50 60 ...
Data2 11 12 13 14 15 16 ...
Data3 80 70 60 50 40 20 ...

Result

      PCC
XX_YY R1
XX_ZZ R2
ZZ_AA R3

结果表中的R1是蛋白质XX和YY的PCC值,也就是pearsonr([10, 11, 80], [20, 12, 70])的结果。 R2 和 R3 将分别是 pearsonr([10, 11, 80], [30, 13, 60]) 和 pearsonr([30, 13, 60], [40, 14, 50])。

在这种工作之前,我得到了使用combination 函数的建议。用所有对计算时非常好,但在这种情况下,我只需要计算表1中的蛋白质对,所以很难使用。

请问有没有什么简单的方法可以用 pandas 轻松完成这种工作?

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    您可以遍历第一个DataFrame (df1) 的行,从df2 中选择相关列,并将带有适当标签的结果添加到dictionary,您可以将其转换为@987654326 @完成后:

    correlations = {}
    for i, row in df1.iterrows():
        correlations[row['col1' + '_' + row['col2']]] = df2.loc[:,row['col1']].corr(df2.loc[:, row['col2'], method='pearson')
    
    result = pd.Series(correlations)
    

    【讨论】:

    • 再次感谢詹森!当其他人用 python 中的几行代码解决这种问题时,我感到很惊讶(但这并不难理解,因为我对 python 很陌生)。如果你不介意,你能给我一些关于这种桌子工作的书籍或网站的建议吗?
    • 您好 z991,事实上我会推荐这个库的 pandas 文档,特别是 pandas.pydata.org/pandas-docs/version/0.17.1。除了最新的参考资料外,它们还提供了大量示例。
    • 我以前读过 10 分钟的 pandas,但我想我必须多学习。我最好按照 pandas 文档中的示例进行练习。非常感谢詹森。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多