python - 如果列中存在匹配值,则使用另一个数据帧注释一个数据帧

标签 python pandas dataframe

我有两个 DataFrame,我想首先在 dataFrame1 中的 col1 中查找与 DataFrame2 中的 col1 中的匹配值,并打印出 DataFrame1 中的所有列以及 DataFrame2 中的附加列。 例如

我尝试过以下操作,

data    = 'file_1'
Up      = pd.DataFrame.from_csv(data, sep='\t')
Up      = Up.reset_index(drop=False)
Up.head()
    Gene_id baseMean    log2FoldChange  lfcSE   stat    pvalue  padj
0   ENSG.16 176.275036  0.9475260059    0.4310373793    2.1982455617    0.0279316115    0.198658
1   ENSG.10 80.199435   0.4349592748    0.2691551416    1.6160169639    0.1060906455    0.369578
2   ENSG.15 1649.400749 -0.0215428237   0.1285061198    -0.1676404495   0.8668661474    0.947548
3   ENSG.10 25507.767530    0.5145516695    0.2473335499    2.0803957642    0.0374892475    0.229378
4   ENSG.12 70.122885   -0.2612483888   0.2593848667    -1.00718439

第二个数据框是,

mydata  = 'file_2'
annon = pd.DataFrame.from_csv(mydata, sep='\t')
annon = annon.reset_index(drop=False)

annon.head()
    Gene_id     sam_1   sam2    sam3    sam4    sam5    sam6    sam7    sam8    sam9    sam10   sam11
0   ENSG.16 404 55  33  39  102 43  193 244 600 174 120
1   ENSG.10 58  89  110 69  64  48  61  81  98  75  119
2   ENSG.15 1536    1246    2540    1751    1850    2137    1460    1362    2158    1367    1320
3   ENSG.10 28508   23073   19982   13821   20355   28835   26875   25632   27131   30991   29351
4   ENSG.12 87  81  121 67  98  47  37  59  68  44  81

以下是我迄今为止尝试过的,

x=pd.merge(Up[['Gene_id' , 'log2FoldChange ', 'pvalue ' , 'padj']] , annon , on = 'Gene_id')

x.head() Gene_id log2FoldChange pvalue padj sam_1 sam2 sam3 sam4 sam5 sam6 sam7 sam8 sam9 sam10 sam11

它只是给我文件头,没有其他任何东西。 因此,我查看了 file1(Up) 的一行值,如下所示, 这就是我得到的

print(Up.loc[Up['Gene_id'] =='ENSG.16'])

Empty DataFrame
Columns: [Gene_id, baseMean , log2FoldChange , lfcSE , stat , pvalue , padj]
Index: []

但事实上它不是空的,它在数据帧 Up 中有值。

任何解决方案都会很棒..!!!

最佳答案

pd.merge(df1[['Gene_Id' , 'log2FoldChange', 'pvalue' , 'padj']] , df2 , left_on='Gene_Id' , right_on= 'Gene_id')

enter image description here

如果需要,您可以轻松删除 Gene_id

关于python - 如果列中存在匹配值,则使用另一个数据帧注释一个数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33826611/

相关文章:

python - Django 1.5 + 用户模型关系

python - Pandas 将多索引的所有级别转换为另一种类型

python - 如果 pandas merge 找到多个匹配项,则将值行写入一个字段

python - 当列表元素是需要解析的文本页时,如何将列表的每个元素存储在数据框中?

python - 数据框列到字典的字典中

python - 根据标签值垂直重新排列 Sankey 图

python - GraphQL/Graphene 用于 Django 模板中的后端调用

python - 我读到 xrange 很懒,它在最后一刻起作用是吗

r - 根据 r 中列的值添加缺失值

python - 堆叠 pandas DataFrame 时设置列名