簡體   English   中英

使用未識別相同值的外部合並在python中合並兩個pandas數據幀

[英]Merging two pandas data frames in python using outer merge not identifying identical values

我正在嘗試使用一個公共列來合並兩個 Pandas 數據框(我從 csv 文件中導入了兩個數據框)。 公共列(鍵列)應該有一些相同的值,但大多數是不同的,所以我使用了外部合並。 執行合並后,我意識到我的輸出實際上只是將數據幀 2 添加到數據幀 1,而實際上沒有將關鍵列中的相同值合並到一行中。

例子:

import pandas as pd

#read csv files as dataframes
df1 = pd.read_table("genelist1.csv", sep=",")
df2 = pd.read_table("genelist2.csv", sep=",")

#print first 4 rows df1
df1[:4]

gene_id      FC_1     p_1
name1        2     0.05
name2        3     0.01
name3        8     0.02

#print first 4 rows df2
df2[:4]

gene_id      FC_2     p_2
name1        8     0.03
name2        3     0.01
name4        8     0.02

#Use outer merge to merge the two data frames using gene_id as key
df_merged = pd.merge(df1, df2, how='outer', on=['gene_id'])

我想要:

df_merged

gene_id      FC_1     p_1    FC_2    p_2
name1        2     0.05      8      0.03
name2        3     0.01      3      0.01
name3        8     0.02      nan    nan
name4        nan   nan       8      0.02

但我實際上得到:

df_merged

gene_id      FC_1     p_1     FC_2    p_2
name1        2     0.05      nan      nan
name2        3     0.01      nan      nan
name3        8     0.02      nan      nan
name1        nan    nan       8      0.03
name2        nan    nan       3      0.01
name4        nan    nan       8      0.02

為了嘗試解決這個問題,我使用了以下代碼,它實際上可能指向問題所在,但我確定我做錯了什么。 出於某種原因,我無法“找到”數據框中的值,即使我可以在那里看到它們。

#print first 4 rows
df1[:4]

gene_id      FC_1     p_1
name1        2     0.05
name2        3     0.01
name3        8     0.02

'name1' in df1.gene_id

False

##The same is true when I do searches in df2, which might explain why the identical gene names aren't combining, but I have no idea why this is happening.

任何幫助將不勝感激,即使它只是將我指向一個我應該已經看過的先前提出的問題。

我能夠解決類似的問題。 第一步是使用df1.dtypesdf2.dtypes來確定我的列的數據類型。 事實證明,我的公共列ABdf1中屬於object類型,在df2中屬於int64

我最終對這兩列使用df1[['A','B']] = df1[['A','B']].astype('int64')以確保AB具有相同每個數據框中的數據類型。 合並然后正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM