我有一个数据帧df:
20060930 10.103 NaN 10.103 7.981
20061231 15.915 NaN 15.915 12.686
20070331 3.196 NaN 3.196 2.710
20070630 7.907 NaN 7.907 6.459
然后我想选择列表中显示的某些序列号的行,假设这里是[1,3],然后是左:
20061231 15.915 NaN 15.915 12.686
20070630 7.907 NaN 7.907 6.459
如何或以何种方式可以做到这一点?
答案 0 :(得分:102)
List = [1, 3]
df.ix[List]
应该做的伎俩! 当我使用数据框索引时,我总是使用.ix()方法。它更容易,更灵活......
<强>更新强>
这不再是可接受的索引方法。不推荐使用ix
方法。使用.iloc
进行基于整数的索引,使用.loc
进行基于标签的索引。
答案 1 :(得分:50)
你也可以使用iloc:
df.iloc[[1,3],:]
答案 2 :(得分:11)
答案 3 :(得分:6)
如果 index_list
包含您想要的索引,您可以通过执行获得具有所需行的数据框
index_list = [1,2,3,4,5,6]
df.loc[df.index[index_list]]
这是基于截至 2021 年 3 月的最新 documentation。
答案 4 :(得分:2)
对于大型数据集,通过type MyType = {
thing: string
};
function aFunc(action: MyType){ console.log('in aFunc', action.thing);} ;
function another(callback: () => string) { console.log('in another', callback());};
function theMethod(theArg: ?MyType) {
if (!theArg) return;
aFunc(theArg);
// flow doesn't complain about this
console.log('in theMethod', theArg.thing);
// Now flow knows thing isn't null
const {thing} = theArg
another(() => thing);
}
参数仅读取选定的行具有存储效率。
示例
skiprows
现在,这将从文件中返回一个DataFrame,该文件将跳过除1和3之外的所有行。
详细信息
来自docs:
pred = lambda x: x not in [1, 3] pd.read_csv("data.csv", skiprows=pred, index_col=0, names=...)
:类似列表或整数或可调用,默认为skiprows
...
如果可调用,则将针对行索引评估可调用函数,如果应跳过该行,则返回True,否则返回False。有效的可调用参数的示例为
None
此功能在pandas 0.20.0+版本中有效。另请参见corresponding issue和related post。
答案 5 :(得分:0)
有很多方法可以解决此问题,而上面列出的方法是实现该解决方案的最常用方法。我想再添加两种方法,以防万一有人在寻找替代方法。
index_list = [1,3]
df.take(pos)
#or
df.query('index in @index_list')