我有一个pandas数据框,看起来像这样:
qseqid sseqid qstart qend
2 1 125 345
4 1 150 320
3 2 150 450
6 2 25 300
8 2 50 500
Run Code Online (Sandbox Code Playgroud)
我想基于具有这些标准的其他行值删除行:如果另一行(r2)存在且具有相同的sseqid和r1[qstart] > r2[qstart],则必须删除行(r1)r1[qend] < r2[qend].
大熊猫有可能吗?
以下是我们可以从pandas 地图函数文档中读到的内容:
当 arg 是字典时,Series 中不在字典中的值(作为键)将转换为 NaN。但是,如果字典是定义missing的dict子类(即提供默认值的方法),则使用此默认值而不是NaN
所以我尝试用以下代码应用此注释:
import pandas as pd
class Missing_dict(dict) :
def __init__(self,*arg,**kw):
super(Missing_dict, self).__init__(*arg, **kw)
def __missing__(self, key) :
return key
md = Missing_dict({"a" : 0})
df = pd.DataFrame([{"key" : "a", "value" : 0}, {"key" : "b", "value" : 1}])
print (df)
print (df["key"].map(md))
Run Code Online (Sandbox Code Playgroud)
但结果不是我所期望的,在我的情况下,我想映射一列中的数据,如果在字典中找不到某个值,那么我希望这个值作为结果(换句话说,我想要如果键在字典中则为值,否则为键)。
我哪里错了?