Pandas使用变量作为列名第2部分

时间:2016-03-26 13:09:45

标签: python-3.x pandas

给出以下数据框:

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'

3 个答案:

答案 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