Python:使用列表为数据框设置子集

时间:2019-04-09 10:56:16

标签: python dataframe indexing

我是python的新手,我有一个非常简单的问题。 我有一个索引的列表,它对应于数据框的某些行索引。使用此列表(按项目的顺序)对数据框进行子集化的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

使用iloc

import numpy as np
import pandas as pd

np.random.seed(0)
df = pd.DataFrame(np.random.randint(100, 200, (10, 2)), columns=['a', 'b'])
print(df, end='\n\n')
print(df.iloc[[7, 2, 3, 1, 6]])

输出:

    a    b
0  144  147
1  164  167
2  167  109
3  183  121
4  136  187
5  170  188
6  188  112
7  158  165
8  139  187
9  146  188

     a    b
7  158  165
2  167  109
3  183  121
1  164  167
6  188  112

如果要使用与中的值相对应的list,则需要合并

values = [158, 167, 183, 164, 188]
print(pd.merge(pd.DataFrame([158, 167, 183, 164, 188], columns=['a']), df, on='a', how='left'))

输出:

     a    b
0  158  165
1  167  109
2  183  121
3  164  167
4  188  112

答案 1 :(得分:0)

“如果我拥有的列表对应于第一列中的元素而不是数据帧索引,我如何进行类似的子设置?”

->

[x for x in df['a'] if x in list_of_elements]