需要从一个数据帧中找到数据,并在Pandas[Python]中查看是否是另一个



我目前有两个csv文件,正在读取这两个文件,需要在一个csv中获取ID,并在另一个csw中找到它们,这样我才能获取它们的数据行。目前,我有以下代码,我相信它们会遍历第一个数据帧,但只是将最后一个匹配项添加到新的数据帧上。但是,我需要它来添加所有后续行
这是我的代码:

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,而不是所有ID。我如何才能让它们匹配并在患者身上?非常感谢。

您可能想要使用合并函数

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

在这里检查https://www.datacamp.com/community/tutorials/joining-dataframes-pandas搜索";内部联接";

--编辑--您可以指定列(使用left_on=None,right_on=None,(,请查看此处:https://pandas.pydata.org/pandas-docs/stable/user_guide/merging.html#database-样式数据帧或命名系列加入合并

@Rui Lima已经发布了正确的答案,但您需要使用以下内容才能使其发挥作用:

df = pd.merge(patientSet , affSet, on='ID', how='inner')

最新更新