我正在尝试在下面的数据框中提取具有匹配Sample_ID的行:
df1 = pd.DataFrame([[1, 1.0, 2.3,0.2,0.53], [2, 3.35, 2.0,0.2,0.65], [2,3.4,
2.0,0.25,0.55], [3,3.4,2.0,0.25,0.55]],
columns=["Sample_ID", "NaX", "NaU","OC","EC"])\
.set_index('Sample_ID')
在上面的数据帧df1中,我想只得到Sample_ID为“2”的行。有没有办法在不指定匹配值的情况下执行此操作,键?
我要找的结果是:
NaX NaU OC EC
Sample_ID
2 3.35 2.0 0.20 0.65
2 3.40 2.0 0.25 0.55
感谢您阅读本文!
答案 0 :(得分:5)
布尔索引会做到这一点。 Sample_ID
是索引,因此您需要使用df1.index
上的条件。
In [34]: df1[df1.index == 2]
Out[34]:
NaX NaU OC EC
Sample_ID
2 3.35 2.0 0.20 0.65
2 3.40 2.0 0.25 0.55
斯科特波士顿提到,df.loc
是另一个很好的选择。
答案 1 :(得分:5)
使用.loc
:
df.loc[2]
输出:
NaX NaU OC EC
Sample_ID
2 3.35 2.0 0.20 0.65
2 3.40 2.0 0.25 0.55
要回答评论问题,您可以创建字典并存储这样的组:
list_of_df = {}
for n,g in df1.groupby(level=0):
list_of_df[n] = g
答案 2 :(得分:3)
g = df1.groupby(level=0)
然后使用g.get_group(2)
NaX NaU OC EC
Sample_ID
2 3.35 2.0 0.20 0.65
2 3.40 2.0 0.25 0.55
但这比它需要的更多。只需选择@ ScottBoston的答案。