如何在Pandas数据框中按名称选择行列表?

时间:2015-12-12 04:38:15

标签: python pandas select dataframe

我正在尝试使用列表从Pandas数据帧中提取行,但它无法完成。这是一个例子

# df
    alleles  chrom  pos strand  assembly#  center  protLSID  assayLSID  
rs#
TP3      A/C      0    3      +        NaN     NaN       NaN        NaN
TP7      A/T      0    7      +        NaN     NaN       NaN        NaN
TP12     T/A      0   12      +        NaN     NaN       NaN        NaN
TP15     C/A      0   15      +        NaN     NaN       NaN        NaN
TP18     C/T      0   18      +        NaN     NaN       NaN        NaN

test = ['TP3','TP12','TP18']

df.select(test)

这就是我尝试使用列表中的元素而做的事情,我收到此错误TypeError: 'Index' object is not callable。我做错了什么?

3 个答案:

答案 0 :(得分:8)

您可以使用df.loc[['TP3','TP12','TP18']]

这是一个小例子:

In [26]: df = pd.DataFrame({"a": [1,2,3], "b": [3,4,5], "c": [5,6,7]})

In [27]: df.index = ["x", "y", "z"]

In [28]: df
Out[28]: 
   a  b  c
x  1  3  5
y  2  4  6
z  3  5  7

[3 rows x 3 columns]

In [29]: df.loc[["x", "y"]]
Out[29]: 
   a  b  c
x  1  3  5
y  2  4  6

[2 rows x 3 columns]

答案 1 :(得分:1)

您可以按位置选择行:

var store = require('../store');
var actions = require('../actions');

// Somewhere inside your component...
store.dispatch(actions.someAction(data));

答案 2 :(得分:-1)

至少有 3 种方法可以访问 Pandas 数据帧的元素。

import pandas as pd
import numpy as np
df=pd.DataFrame(np.random.uniform(size=(10,10)),columns= list('PQRSTUVWXY'),index= list("ABCDEFGHIJ"))

使用 df[['P','Q']] 您只能访问数据框的列。您可以使用数据框的 dataframe.loc[](代表位置)或 dataframe.iloc[](代表索引位置)numpy 样式切片。

df.loc[:,['P','Q']]

以上将为您提供以“P”和“Q”命名的列。

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

以上将返回键为“A”和“B”的行。

您还可以使用 iloc 方法使用基于数字的切片。

df.iloc[:,[1,2]]

这将返回编号为 1 和 2 的列。 同时,

df.iloc[[1,2],:]

将返回第 1 行和第 2 行。 您可以通过

访问任何特定元素
df.iloc[1,2]

或者,

df.loc['A','Q']