Hyp*_*nja 1 python indexing label python-2.7 pandas
我有一个数据框如下:
Type Name Category
Bird Flappy Bird Air
Bird Pigeon Air
Pokemon Jerry Aquatic
Pokemon Mudkip Aquatic
Animal Lion Terrestrial
Bird Pigeon Air2
Run Code Online (Sandbox Code Playgroud)
对于给定的名称,比如 say "Pigeon",我需要访问类别 Column 中的相应值,即它应该给我字符串"Air"。
我有 2 个值,Pigeon但我需要返回“空气”进行第二次观察。
请注意,我根本没有使用索引,因此无法进行第二次观察iloc。我需要在另一列中按值访问它。
或类似的东西获得了指数的“鸽子”,并使用获得相应的列值就行了。
用 loc
所以你的例子:
df.loc[df.Name == 'Pigeon', 'Category']
Run Code Online (Sandbox Code Playgroud)
会给你你想要的
例子:
In [17]:
import io
import pandas as pd
temp = """Type Name Category
Bird Flappy_Bird Air
Bird Pigeon Air
Pokemon Jerry Aquatic
Pokemon Mudkip Aquatic
Animal Lion Terrestrial"""
df = pd.read_csv(io.StringIO(temp), sep='\s+')
df
Out[17]:
Type Name Category
0 Bird Flappy_Bird Air
1 Bird Pigeon Air
2 Pokemon Jerry Aquatic
3 Pokemon Mudkip Aquatic
4 Animal Lion Terrestrial
[5 rows x 3 columns]
In [19]:
df.loc[df.Name == 'Pigeon','Category']
Out[19]:
1 Air
Name: Category, dtype: object
Run Code Online (Sandbox Code Playgroud)
如果您有多个值并且只想要第一个,请使用idxmin:
In [24]:
df.ix[(df.Name == 'Pigeon').idxmin(),'Category']
Out[24]:
'Air'
Run Code Online (Sandbox Code Playgroud)
编辑
因此,对于我们有多个值并且您想要访问单个值的情况,您可以检查索引值并直接访问它们:
在 [23] 中:
df.loc[df.Name=='Pigeon','Category'].index.values
Out[23]:
array([1, 5], dtype=int64)
In [26]:
df.loc[df.Name=='Pigeon','Category'][5]
Out[26]:
'Air2'
Run Code Online (Sandbox Code Playgroud)
或者,如果你想遍历它们,那么 series 有一个iteritems()方法:
In [28]:
df.loc[df.Name=='Pigeon','Category'].iteritems()
Out[28]:
[(1, 'Air'), (5, 'Air2')]
Run Code Online (Sandbox Code Playgroud)
其中任何一个都应该满足您的要求
| 归档时间: |
|
| 查看次数: |
8785 次 |
| 最近记录: |