将函数应用于所有列以从较大的文件中提取每列值的秩并计算秩和

2024-10-02 20:35:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试迭代或创建一个在数据帧中的列上循环的函数。此函数应该获取每列中的值,并在较大的文件中搜索这些值。然后我要它提取这些目标值的秩,并获得一个向量,其中包含从所有100列中获得的值的秩和。你知道吗

100列文件称为模拟.txt看起来是这样的:

SIM0    SIM1    SIM2    ...SIM100
rs168   rs668   rs228   ...rs930
rs466   rs751   rs109   ...rs216
rs484   rs139   rs636   ...rs755
rs104   rs226   rs1540  ...rs671
rs123   rs377   rs732   ...rs672

我需要搜索的更大的文件是rs_等级.txt,看起来是这样的:

rsid    Rank
rs168   1
rs464   2
rs485   3
rs110   4
rs129   5
rs297   6
rs139   7
.       .
.       .
.       .
.       .
.       .
rs105   2498509

我想从中提取SIM0模拟.txt,然后我想从SIM0中得到rs数在rs中的秩_等级.txt. 在得到SIM0列中rs数的秩之后,我想计算秩和。你知道吗

示例:如果要从rs\u秩中提取SIM0的秩,我会得到如下结果:

    SIM0    Rank
    rs168   1
    rs466   49
    rs484   398208
    rs104   402487
    rs123   2972

SIM0的秩和等于803717 秩和向量(803717,SIM1\u ranksum,SIM2\u ranksum,SIM100\u ranksum)

最后,我想能够做到这一点,所有100列的模拟文本,所以在最后,我有一个ranksum向量100秩和值对应的所有100列。你知道吗

请帮帮我!我不知道如何创建一个函数来遍历每一列并执行此操作。我一直在考虑使用合并功能,但我不知道如何做到这一点。 谢谢!你知道吗


Tags: 文件函数txt向量rssim2sim0sim1
1条回答
网友
1楼 · 发布于 2024-10-02 20:35:32

您可以^{}使用Series ^{} method

In [11]: res = df.applymap(rs.get)

In [12]: res
Out[12]:
   SIM0  SIM1  SIM2
0   388   386   491
1   148   471   171
2   162   261   276
3   910   780   445
4   952   673   367

然后^{}

In [13]: df.sum()
Out[13]:
SIM0    2560
SIM1    2571
SIM2    1750
dtype: int64

(我用了一个随机的整数序列rs,而不是你给出的部分)

要获取数据帧和序列,可以使用^{},如下所示:

In [31]: df = pd.read_csv('simulation.txt')

In [32]: rs = pd.read_csv('rs_ranks.txt').set_index('rsid')['Rank']

In [33]: rs
Out[33]:
rsid
rs168    1
rs464    2
rs485    3
rs110    4
rs129    5
rs297    6
rs139    7
Name: Rank, dtype: int64

相关问题 更多 >