索引熊猫数据框混合行号和列名

时间:2020-07-06 09:36:07

标签: python r pandas

来自R,发现熊猫数据框的索引规则不容易使用。我有一个数据框,我想通过它们的名称获取第ith行和一些列。我可以清楚地理解使用ilocloc,如下所示。

df = pd.DataFrame(np.random.randn(8, 4),columns=['A', 'B', 'C', 'D'])
df.loc[:,['A', 'B']]
df.iloc[0:,0:2]

从概念上讲,我想要的是这样的东西:

df.loc[0:,['A', 'B']]

将第一行与这些列对应。当然,该代码将失败。我貌似可以使用:

df.loc[0:0,['A', 'B']]

但是,这似乎很奇怪,尽管它可以工作。如何使用行号和列名的组合正确索引?在R中,我们将执行以下操作:

df = data.frame(matrix(rnorm(32),8,4))
colnames(df) <- c("A", "B", "C", "D") 
df[1, c('A', 'B')]

***更新*** 我错了,上面的示例代码确实适用于此玩具数据帧。但是,根据我的真实数据,我看到了以下内容吗?这两个对象的类型相同,代码也相同,因此此处不了解错误。

type(poly_set)
<class 'pandas.core.frame.DataFrame'>
poly_set.loc[:,['P1', 'P2', 'P3']]
                      P1            P2           P3
29   -2.0897226679999998  -1.237649556         None
361  -2.0789117340000001   0.144751427  1.572417454
642  -2.0681314259999999  -0.196563749  1.500834574

poly_set.loc[0,['P1', 'P2', 'P3']]
Traceback (most recent call last):
  File "C:\Users\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pandas\core\indexes\base.py", line 2646, in get_loc
    return self._engine.get_loc(key)
  File "pandas\_libs\index.pyx", line 111, in pandas._libs.index.IndexEngine.get_loc
  File "pandas\_libs\index.pyx", line 138, in pandas._libs.index.IndexEngine.get_loc
  File "pandas\_libs\hashtable_class_helper.pxi", line 998, in pandas._libs.hashtable.Int64HashTable.get_item
  File "pandas\_libs\hashtable_class_helper.pxi", line 1005, in pandas._libs.hashtable.Int64HashTable.get_item
KeyError: 0

1 个答案:

答案 0 :(得分:1)

您正在使用切片,这意味着在两个给定索引之间。如果只希望第一行数据,请使用:

尝试:

df = df.reset_index()    
df.loc[0,['A', 'B']]
相关问题