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