从Pandas DataFrame中设置索引

时间:2016-11-07 14:17:44

标签: pandas dataframe

我有一个包含[A, B, C, D, E, F, G, H]列的DataFrame。

已使用列[D, G, H]创建索引:

>>> print(dgh_columns)
Index(['D', 'G', 'H'], dtype='object')

如何在不使用列D, G, H的情况下检索原始数据框

是否有索引子集操作?

理想情况下,这将是:

df[df.index - dgh_columns]

但这似乎不起作用

2 个答案:

答案 0 :(得分:5)

我认为您可以使用Index.difference

df[df.columns.difference(dgh_columns)]

样品:

df = pd.DataFrame({'A':[1,2,3],
                   'B':[4,5,6],
                   'C':[7,8,9],
                   'D':[1,3,5],
                   'E':[7,8,9],
                   'F':[1,3,5],
                   'G':[5,3,6],
                   'H':[7,4,3]})

print (df)
   A  B  C  D  E  F  G  H
0  1  4  7  1  7  1  5  7
1  2  5  8  3  8  3  3  4
2  3  6  9  5  9  5  6  3

dgh_columns = pd.Index(['D', 'G', 'H'])
print (df[df.columns.difference(dgh_columns)])
   A  B  C  E  F
0  1  4  7  7  1
1  2  5  8  8  3
2  3  6  9  9  5

使用numpy.setxor1dnumpy.setdiff1d的Numpy解决方案:

dgh_columns = pd.Index(['D', 'G', 'H'])
print (df[np.setxor1d(df.columns, dgh_columns)])
   A  B  C  E  F
0  1  4  7  7  1
1  2  5  8  8  3
2  3  6  9  9  5
dgh_columns = pd.Index(['D', 'G', 'H'])
print (df[np.setdiff1d(df.columns, dgh_columns)])
   A  B  C  E  F
0  1  4  7  7  1
1  2  5  8  8  3
2  3  6  9  9  5

答案 1 :(得分:2)

使用drop

df.drop(list('DGH'), axis=1)
df = pd.DataFrame({'A':[1,2,3],
                   'B':[4,5,6],
                   'C':[7,8,9],
                   'D':[1,3,5],
                   'E':[7,8,9],
                   'F':[1,3,5],
                   'G':[5,3,6],
                   'H':[7,4,3]})

df.drop(list('DGH'), 1)

enter image description here