pandas 获取行列的方式多种多样今天我们就总结一下
import pandas as pd
url = 'https://raw.githubusercontent.com/mwaskom/seaborn-data/master/titanic.csv'
titanic = pd.read_csv(url)
titanic.columns
'''
Index(['survived', 'pclass', 'sex', 'age', 'sibsp', 'parch', 'fare',
'embarked', 'class', 'who', 'adult_male', 'deck', 'embark_town',
'alive', 'alone'],
dtype='object')
'''
titanic.index
'''
RangeIndex(start=0, stop=891, step=1)
'''
获取列
# 获取一列
titanic.age
titanic["age"]
# 获取多列
titanic[["age", "sex"]]
titanic[titanic.columns[0:10]]
# 使用filter
titanic.filter(items=["age"], axis=1)
titanic.filter(regex="e$", axis=1)
获取行
# 获取一行
titanic[0:1]
titanic[1:2]
titanic.loc[titanic.index[0:5]]
titanic.loc[0]
# 获取多行
titanic.loc[[0,1]]
titanic[:1]
titanic.loc[:1]
titanic.filter(items=[0,1], axis=0)
同时对列行进行过滤
# 获取
titanic.loc[:1, ["age","sex"]]
# 获取奇数行
titanic.loc[map(lambda x:bool(x%2), titanic.index)]
# 获取多列
titanic.loc[:, map(lambda x:x.startswith('s'), titanic.columns)]
# 获取奇数行的多列
titanic.loc[[0,1], list(titanic.columns[0:6])] // 没有list 会报错
titanic.loc[list(map(lambda x:bool(x%2), titanic.index)), list(map(lambda x:x.startswith('s'), titanic.columns))]
- 尽量使用loc 函数, filter 函数最后也是调用 loc 函数
- 复杂的过滤 通过使用columns/index 配合lambda 函数