在Pandas中选取数据主要是通过 df.loc 与 df.iloc 两种方式,这两种方式的用法如下:
- 在知道列名字的情况下,可以通过df.loc[row_index, column_name] 来定位数据
- 在 column_name 特别长或者index是时间序列等各种不方便输入的情况下,可以用df.iloc (其中的i即是index之意), df.iloc允许使用数字来定位,其用法为 iloc[row_index, column_index]
- df.ix 已经成为deprecated,不推荐使用
下面就通过 ml-100k 中的 u.data 数据为例说明:
import pandas as pd
dataPath = u'D:/datas/ml-100k/u.data'
df = pd.read_csv(dataPath, sep='\t', header=None, names=['user_id', 'item_id', 'rating', 'timestamp'])
# 选取第 0 行
print(df.loc[0])
# 选取第 0 行,第 user_id 列
print(df.loc[0, 'user_id'])
# 选取第 2、3 两行,第 user_id、item_id 两列
print(df.loc[[2,3],['user_id','item_id']])
# 选取前100行
print(df[0:100])
# 选取前100行,并且 user_id, item_id 两列
print(df.loc[:100,['user_id', 'item_id']])
# 选取满足 df.user_id > 500 的行,第 user_id 列
print(df.loc[df['user_id'] > 500, 'user_id'])
print(df.loc[df.user_id > 500, 'user_id'])
# 选取满足 df.user_id > 500 的行,第 user_id, item_id两列
print(df.loc[df['user_id'] > 500, ['user_id', 'item_id']])
print(df.loc[df.user_id > 500, ['user_id', 'item_id']])
同理,在使用 df.iloc 时,在 column_index 位置可以使用 数字,列表,切片,布尔值等方式来选择。
网友评论