python - 如果行中的其他条目匹配,则更改 Python Pandas 数据框中的条目

标签 python pandas dataframe

我有一个名为 All_samp 的数据框,如果同一行中的其他条目与不同行中的条目匹配,我想将列中的条目更改为最低值。例如,我有这个数据框

<表类=“s-表”> <标题> 索引 染色体 开始 样本 没有通话 <正文> 22 chr1 190098060 8.1 600 23 chr1 190098060 9.1 858 24 chr1 190098078 8.1 201 25 chr1 190098093 8.1 250 26 chr1 190098093 8.1 32 27 chr1 190098093 8.1 271 28 chr1 190098119 8.1 288 29 chr1 190098123 10.1 146 30 chr1 190098123 10.1 307 31 chr10 190098123 8.1 366 32 chr1 190098160 8.1 298

如果染色体、起始点和样本匹配相同,那么我希望 no_calls 成为匹配行的最小值。因此,这就是我正在寻找的结果:

<表类=“s-表”> <标题> 索引 染色体 开始 样本 没有通话 <正文> 22 chr1 190098060 8.1 600 23 chr1 190098060 9.1 858 24 chr1 190098078 8.1 201 25 chr1 190098093 8.1 32 26 chr1 190098093 8.1 32 27 chr1 190098093 8.1 32 28 chr1 190098119 8.1 288 29 chr1 190098123 10.1 146 30 chr1 190098123 10.1 146 31 chr10 190098123 10.1 366 32 chr1 190098160 8.1 298

我尝试通过使用 itertuples 和嵌套循环创建一系列 no_calls 列来更改条目。这样,我应该能够用修改后的系列替换 no_calls 列。这就是我的代码的样子

no_calls = []
for row1 in All_samp.itertuples():
    for row2 in All_samp.itertuples(): 
        if row1[0] != row2[0] and (row1[1] == row2[1] and row1[2] == row2[2] and row1[3] == row2[3]):
            print(row1[0], row2[0], row1[4], row2[4], min(row1[4], row2[4]))
            no_calls.append(min(row1[4], row2[4]))
            break
        else:
            no_calls.append(row1[4])
            break

结果只是给了我一个原始 no_calls 条目的列表,我想这是因为我的“if”语句仅经历第一次迭代,而不是循环遍历所有行。一旦我让循环工作,我将用列表替换该列

All_samp['no_calls'] = no_calls

如果有任何想法如何帮助我修复循环,甚至是一种完全不同的方法来获取数据框中的最小 no_calls 值(我确信有比循环更好的东西,我将不胜感激。

此外,如果有一种方法可以让我在 StackOverflow 上以表格以外的方式呈现数据帧,以便更轻松地直接使用它们,请告诉我。

最佳答案

Groupbytransform('min')

df['NO_CALLS']=df.groupby(['CHROMOSOME','START','SAMPLE'])['NO_CALLS'].transform('min')

关于python - 如果行中的其他条目匹配,则更改 Python Pandas 数据框中的条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65206943/

相关文章:

python - 使用 csv.writer 将值写入特定列

python - 将 4 个 uint_8 值转换为 python 中的 float

python - 通过 selenium 进行浏览器性能测试

algorithm - 如何在 Scala 中的数据框中获取成对的 x 值?

python - 使用本地设置文件从 PyCharm 运行 django 服务器时出错

python - 如何迭代 Pandas 行并根据行中的排名修改每个单元格?

python - 如果数据框中的列名相同,则连接列

python - 计算数据帧每一行中元素的出现次数

R根据先前观察到的值创建列

python - 使用 Python 将数据帧插入 MS-SQL 时出错