我目前有两个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')