【发布时间】:2017-01-16 08:48:49
【问题描述】:
我有两个DataFrames。一个看起来像这样:
df1.head()
#CHR Start End Name
chr1 141474 173862 SAP
chr1 745489 753092 ARB
chr1 762988 794826 SAS
chr1 1634175 1669127 ETH
chr1 2281853 2284259 BRB
第二个DataFrame 如下所示:
df2.head()
#chr start end
chr1 141477 173860
chr1 745500 753000
chr16 56228385 56229180
chr11 101785507 101786117
chr7 101961796 101962267
我希望从两个DataFrames 映射前三列并创建一个新的DataFrame、df3。例如,如果df1 和df2 中的#chr 相等,则查找df2.start >= df1.start 和df2.end <= df1.end。
如果是这种情况,打印如下:
df3.head()
#chr start end Name
chr1 141477 173860 SAP
chr1 745500 753000 ARB
到目前为止,我已经尝试创建一个函数来执行此操作:
def start_smaller_than_end(df1,df2):
if df1.CHR == df2.CHR:
df2.start >= df1.Start
df2.End <= df2.End
return df3
但是,当我运行它时,我收到以下错误:
df3(df1, df2)
name 'df3' is not defined
非常感谢任何建议和帮助。
【问题讨论】:
标签: python pandas numpy indexing merge