我通过列名列表 Select 了一个数据帧的几列.如果列表中的所有元素都在数据框中,那么这种方法可以很好地工作.
有没有办法 Select 该列表中包含的所有列,即使该列表的所有元素都不包含在数据框中?以下是产生上述错误的一些示例数据:
df = pd.DataFrame( [[0,1,2]], columns=list('ABC') )
lst = list('ARB')
data = df[lst] # error: not in index
我通过列名列表 Select 了一个数据帧的几列.如果列表中的所有元素都在数据框中,那么这种方法可以很好地工作.
有没有办法 Select 该列表中包含的所有列,即使该列表的所有元素都不包含在数据框中?以下是产生上述错误的一些示例数据:
df = pd.DataFrame( [[0,1,2]], columns=list('ABC') )
lst = list('ARB')
data = df[lst] # error: not in index
我想你需要Index.intersection
:
df = pd.DataFrame({'A':[1,2,3],
'B':[4,5,6],
'C':[7,8,9],
'D':[1,3,5],
'E':[5,3,6],
'F':[7,4,3]})
print (df)
A B C D E F
0 1 4 7 1 5 7
1 2 5 8 3 3 4
2 3 6 9 5 6 3
lst = ['A','R','B']
print (df.columns.intersection(lst))
Index(['A', 'B'], dtype='object')
data = df[df.columns.intersection(lst)]
print (data)
A B
0 1 4
1 2 5
2 3 6
另一个numpy.intersect1d
的解决方案:
data = df[np.intersect1d(df.columns, lst)]
print (data)
A B
0 1 4
1 2 5
2 3 6