gpt4 book ai didi

python - 使用外部合并在 python 中合并两个 Pandas 数据帧不识别相同的值

转载 作者:太空宇宙 更新时间:2023-11-04 05:40:20 26 4
gpt4 key购买 nike

我正在尝试使用公共(public)列合并两个 pandas 数据框(我从 csv 文件导入了两个数据框)。公共(public)列(键列)应该有一些相同的值,但大多数是不同的,所以我使用了外部合并。执行合并后,我意识到我的输出实际上只是将数据帧 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 来确定我的列的数据类型。事实证明,我的公共(public)列 ABdf1 中属于 object 类型df2 中的 >int64

我最终对这两个都使用了 df1[['A','B']] = df1[['A','B']].astype('int64')列以确保 AB 在每个数据框中具有相同的数据类型。然后合并工作正常。

关于python - 使用外部合并在 python 中合并两个 Pandas 数据帧不识别相同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34161870/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com