Pandas 重复列数据帧切片问题
我有一个带有重复列的dataframePandas 重复列数据帧切片问题,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
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