熊猫:无法按索引列

时间:2015-11-18 19:23:21

标签: python csv numpy pandas

我有一个csv文件,其中包含以下格式的数据。

Layer   time     BSs        Temp    Message
57986   2:52:46   87        None    CMSG 
20729   0:23:02   82        None    BMSG 
20729   0:44:17   81        None    AMSG 
20729   0:23:02   82        None    BMSG 
20729   0:44:17   81        None    AMSG 

我将csv文件读入pandas数据框,如下所示。

with open(INPUT_FILE) as fin:
    df = pd.read_csv(INPUT_FILE,
                  index_col=["Layer","time"],
                  usecols=["Layer", "time", "BSs",,"Message"],
                  header=0,
                  #names=["Layer", "time", "BSs", ,"Message"])
    gb = df.groupby(['Layer'])

    for k in gb:
         print('key = {}'.format(k))

我收到错误

KeyError: 'Layer'

另外,我想从上面的数据框中删除重复的行。

df = df.drop_duplicates()

似乎没有正确执行。由于某种原因,它正在删除太多行。

1 个答案:

答案 0 :(得分:1)

由于Layer位于索引中,因此它不是要分组的可用列。您必须先重置索引。

df = pd.read_csv(INPUT_FILE,
                 usecols=["Layer", "relative_time", "BSs", "Vge","Message"],
                 header=0).drop_duplicates()

gb = df.groupby('Layer')

for k in gb:
    print('key = {}'.format(k))

key = (20729,    Layer relative_time      Ht  BSs   Vge  Temp Message
1  20729       0:23:02  45.06m   82  11.6  None    BMSG
2  20729       0:44:17  45.06m   81  11.6  None    AMSG)
key = (57986,    Layer relative_time     Ht  BSs   Vge  Temp Message
0  57986       2:52:46  0.00m   87  15.4  None    CMSG)