Pandas 重复列数据帧切片问题

Pandas 重复列数据帧切片问题,pandas,Pandas,我有一个带有重复列的dataframedf(我需要重复列dataframe,它将作为参数传递给matplotlib进行打印,因此列的名称和内容可能相同或不同) 我可以通过以下方式获得第二列:df[df.columns[1] >>> df[df.columns[1]] STK_ID RPT_Date 11_STK79 20130115 2.744 21_STK58 20130115 0.048 22_STK229 20130115 0.350

我有一个带有重复列的dataframe
df
(我需要重复列dataframe,它将作为参数传递给matplotlib进行打印,因此列的名称和内容可能相同或不同)

我可以通过以下方式获得第二列:
df[df.columns[1]

>>> df[df.columns[1]]
STK_ID     RPT_Date
11_STK79   20130115    2.744
21_STK58   20130115    0.048
22_STK229  20130115    0.350
23_STK34   20130115    0.663
但是如果我想通过
df[df.columns[0]]
获得第一列,它将给出:

>>> df[df.columns[0]]
                                   PE      PE
STK_ID    RPT_Date                
11_STK79  20130115  41.932  41.932
21_STK58  20130115  14.223  14.223
22_STK229 20130115  22.436  22.436
23_STK34  20130115 -63.252 -63.252
哪一个有两列?这将使我的申请下来,因为申请只是想第一栏,但熊猫给第一和第四栏!这是一个bug还是故意设计的?如何绕过这个问题


我的pandas版本是0.8.1。

我真的不明白为什么需要使用相同名称的两列,避免使用它可能是最好的

但要回答您的问题,这将只返回“PE”列中的一列:

df.T.drop_duplicates().T.PE

STK_ID     RPT_Date
11_STK79   20130115    41.932
21_STK58   20130115    14.223
22_STK229  20130115    22.436
23_STK34   20130115   -63.252
Name: PE
或:


谢谢你的提示。但是我认为“df[df.columns[0]]”返回两列是一个设计问题。对于语法,请非常清楚地告诉熊猫,我只想要“column[0]”。我不同意。columns[0]返回第一列的名称,而不是列本身。你可以用它来做索引。因此我将其解释为“给我所有de-name为df.columns[0]的列”,因此基本上是df['PE']。我明白了。我应该用“df.ix[:,0]”而不是“df[df.columns[0]]”我不知道你可以用.ix[]像那样分割它,很好的提示。是的,因为据我所知,这很难只提到第一栏。如果你确定你总是需要第一个,那就应该这样做,否则你可能需要先用类似“np.where(df.columns='PE')”这样的词搜索'PE'位置
df.T.drop_duplicates().T.PE

STK_ID     RPT_Date
11_STK79   20130115    41.932
21_STK58   20130115    14.223
22_STK229  20130115    22.436
23_STK34   20130115   -63.252
Name: PE
df.T.ix[0].T