给出以下数据框:
import pandas as pd
import numpy as np
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]})
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
如何将列名分配给变量以用于引用所述列名?
例如,如果我这样做:
cols=['A','B']
cols2=['C','D']
然后我想做这样的事情:
df[cols,'F',cols2]
但结果如下:
TypeError: unhashable type: 'list'
答案 0 :(得分:2)
我认为您需要将F
列添加到list
:
allcols = cols + ['F'] + cols2
print df[allcols]
A B F C D
0 1 4 7 7 1
1 2 5 4 8 3
2 3 6 3 9 5
或者:
print df[cols + ['F'] +cols2]
A B F C D
0 1 4 7 7 1
1 2 5 4 8 3
2 3 6 3 9 5
答案 1 :(得分:1)
需要提供一个list
列作为参考。
In [48]: df[cols+['F']+cols2]
Out[48]:
A B F C D
0 1 4 7 7 1
1 2 5 4 8 3
2 3 6 3 9 5
并考虑使用df.loc[:, cols+['F']+cols2]
,df.ix[:, cols+['F']+cols2]
进行切片。
答案 2 :(得分:1)
Python 3解决方案:
In [154]: df[[*cols,'F',*cols2]]
Out[154]:
A B F C D
0 1 4 7 7 1
1 2 5 4 8 3
2 3 6 3 9 5