根据另一列的值替换 Pandas 数据框中的特定值

独自的

我有一个与此类似的 DataFrame:

Chr  Start_Position End_Position Type
1    10000          10001        SNP
5    45321          45327        INS
12   44700          44710        DEL

我需要根据以下内容更改某些单元格的值Type

  • SNP需要Start_Position+ 1
  • INS需要End_Position+ 1
  • DEL需要Start_Position+ 1

我的问题是我目前的解决方案非常冗长。我尝试过的(dataframe是原始数据源):

snp_records = dataframe.loc[dataframe["Type"] == "SNP", :]
del_records = dataframe.loc[dataframe["Type"] == "DEL", :]
ins_records = dataframe.loc[dataframe["Type"] == "INS", :]

snp_records.loc[:, "Start_Position"] = snp_records["Start_Position"].add(1)
del_records.loc[:, "Start_Position"] = del_records["Start_Position"].add(1)
ins_records.loc[:, "End_Position"] = ins_records["End_Position"].add(1)

dataframe.loc[snp_records.index, "Start_Position"] = snp_records["Start_Position"]
dataframe.loc[del_records.index, "Start_Position"] = del_records["Start_Position"]
dataframe.loc[ins_records.index, "End_Position"] = ins_records["End_Position"]

由于我必须为比示例更多的列执行此操作(不过,类似的概念)这变得非常冗长,并且可能容易出错(事实上,由于所有重复,我在输入示例时犯了几个错误)线。

这个问题与我的相似,但那里的值是预定义的,而我需要自己从数据中获取它们。

广黄

你可以这样做:

df.loc[df['Type'].isin(['SNP','INS']), 'Start_Position'] += 1
df.loc[df['Type'].eq('INS'), 'End_Position'] += 1

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Pandas数据框:根据另一列中的值替换多行

根据pandas数据框中另一列的条件将int64值替换为“None”

使用 Pandas 根据数据框中的另一列值获取特定值的计数和总数

根据另一列中的值替换pandas df中的值

如何根据 Pandas 中另一列中的值替换 NAN 值

根据另一列中的值对pandas数据框中的列进行归一化

根据另一列中的 nan 替换 pandas 列中的值

Pandas:如何根据另一列替换列中的 Nan 值?

根据列表或另一列中的值在Pandas数据框中动态选择列

遍历一列并根据 PANDAS 数据框中另一列的值将值添加到列表

根据另一列的值将列添加到pandas数据框中

根据另一列中的条件在 Pandas 数据框中设置值

用pandas数据框另一列中的值替换空列表

Pandas数据框:根据另一列中的值操纵列(无需遍历行)

根据另一列中的字符串值在 pandas 数据框中修改一列

pandas - 根据另一列更改列中的值

替换另一列中的缺失值-Pandas

根据另一列在pandas列中分配值

Pandas / Python:根据另一列中的值设置一列的值

应用特定功能根据数据框中另一列的条件替换列的值

如何根据 Pandas 数据框中另一列的条件将值填充到新列中?

根据另一行中的 100 个值是否小于 x 在 pandas 数据框中添加一列

如何使用 pandas 更改特定列的数据并根据另一列中的特定值将它们相乘?

Pandas groupby:根据另一列中的值更改一列中的值

用另一列Pandas DataFrame替换一列中的值

根据Pandas中另一列的值范围汇总一列的内容

根据另一列(Python,Pandas)中的值删除一列的重复项

根据另一列中的值填充一列-Pandas

替换pandas数据框中的特定列值