如何根据另一个数据框架的索引来对数据框架的列进行子集设置?



clin.index(row length = 81)的行是common_mrna(col length = 151)的列的子集。只有当列名与clin数据框的行值匹配时,我才想保留common_mrna的列。

我的代码未能将common_mrna中的列数减少到81。

import pandas as pd
common_mrna = common_mrna.set_index("Hugo_Symbol")
mrna_val = {}
for colnames, val in common_mrna.iteritems():
for i, rows in clin.iterrows():
if [[common_mrna.columns == i] == "TRUE"]:
mrna_val = np.append(mrna_val, val)
mrna = np.concatenate(mrna_val, axis=0)

common_mrna

<表类>Hugo_SymbolBCDtbody><<tr>第一个1234第二5行67

尝试使用reindex:

common_mrna.reindex(clin.index, axis=1)

输出:

A  D
First   1  4
Second  5  7

更新IIUC:

common_mrna.set_index('Hugo_Symbol').reindex(clin.index, axis=1).reset_index()

在ucc中,可以选择common_mrna列中clinA header的行,并添加common_mrna的第一列

cols = clin.loc[clin.index.isin(common_mrna.columns)].index.tolist()
# or with set
cols = list(sorted(set(clin.index.tolist()) & set(common_mrna.columns), key=common_mrna.columns.tolist().index))
out = common_mrna[['Hugo_Symbol'] + cols]
print(out)
Hugo_Symbol  A  D
0       First  1  4
1      Second  5  7