首页 > 解决方案 > 需要从一个数据帧中查找数据,看看它是否在 Pandas [Python] 中是另一个数据帧

问题描述

我目前有 2 个 csv 文件并且正在读取它们,并且需要在一个 csv 中获取 ID 并在另一个中找到它们,以便我可以获得他们的数据行。目前我有以下代码,我相信它会通过第一个数据帧,但只是将最后一个匹配项添加到新数据帧中。但是,我需要它来添加所有后续行。
这是我的代码:

patientSet = pd.read_csv("794_chips_RMA.csv")

affSet = probeset[probeset['Analysis']==1].reset_index(drop=True) 
houseGenes = probeset[probeset['Analysis']==0].reset_index(drop=True)

for x in affSet['Probeset']:
     #patients = patientSet[patientSet['ID']=='1557366_at'].reset_index(drop=True)
     #patients = patientSet[patientSet['ID']=='224851_at'].reset_index(drop=True)
     patients = patientSet[patientSet['ID']==x].reset_index(drop=True)

print(affSet['Probeset'])
print(patientSet['ID'])
print(patients)

以下是输出:

0      1557366_at
1       224851_at
2      1554784_at
3       231578_at
4    1566643_a_at
5       210747_at
6     231124_x_at
7     211737_x_at
Name: Probeset, dtype: object
0              1007_s_at
1                1053_at
2                 117_at
3                 121_at
4              1255_g_at
              ...       
54670     AFFX-ThrX-5_at
54671     AFFX-ThrX-M_at
54672    AFFX-TrpnX-3_at
54673    AFFX-TrpnX-5_at
54674    AFFX-TrpnX-M_at
Name: ID, Length: 54675, dtype: object
            ID  phchp003v1  phchp003v2  phchp003v3  ...  phchp367v1  phchp367v2  phchp368v1  phchp368v2
0  211737_x_at   12.223453   11.747159    9.941889  ...   14.828389    9.322779   10.609053   10.771162

如您所见,它仅匹配第一个数据帧中的最后一个 ID,而不是全部匹配。我怎样才能让他们都匹配并成为患者?谢谢你。

标签: pythonpandascsv

解决方案


您可能想使用合并功能

df_inner = pd.merge(df1, df2, on='id', how='inner')

在这里查看https://www.datacamp.com/community/tutorials/joining-dataframes-pandas搜索“内部连接”

--edit-- 你可以指定列(使用 left_on=None,right_on=None,),看这里:https ://pandas.pydata.org/pandas-docs/stable/user_guide/merging.html#database-style -dataframe-or-named-series-joining-merging


推荐阅读