Python_pandas_dataframe
2017-10-13 14:35
337 查看
在刚开始使用pandas
9b55
DataFrame的时候,对于数据的选取,修改和切片经常困惑,这里总结了一些常用的操作。
先初始化一个DateFrame做例子
[python]
view plain
copy
print?
import numpy as np
import pandas as pd
df = pd.DataFrame([['Snow','M',22],['Tyrion','M',32],['Sansa','F',18],['Arya','F',14]], columns=['name','gender','age'])
df是这样的
[python]
view plain
copy
print?
In [35]: df
Out[35]:
name gender age
0 Snow M 22
1 Tyrion M 32
2 Sansa F 18
3 Arya F 14
如果每列都有column name,比如这里是:
[python]
view plain
copy
print?
In [42]: df.columns
Out[42]: Index(['name', 'gender', 'age'], dtype='object')
1. df['column_name'] ,df[row_start_index, row_end_index] 选取指定整列数据
[python]
view plain
copy
print?
df['name']
df['gender']
df[['name','gender']] #选取多列,多列名字要放在list里
df[0:] #第0行及之后的行,相当于df的全部数据,注意冒号是必须的
df[:2] #第2行之前的数据(不含第2行)
df[0:1] #第0行
df[1:3] #第1行到第2行(不含第3行)
df[-1:] #最后一行
df[-3:-1] #倒数第3行到倒数第1行(不包含最后1行即倒数第1行,这里有点烦躁,因为从前数时从第0行开始,从后数就是-1行开始,毕竟没有-0)
2. loc,在知道列名字的情况下,df.loc[index,column] 选取指定行,列的数据
[python]
view plain
copy
print?
# df.loc[index, column_name],选取指定行和列的数据
df.loc[0,'name'] # 'Snow'
df.loc[0:2, ['name','age']] #选取第0行到第2行,name列和age列的数据, 注意这里的行选取是包含下标的。
df.loc[[2,3],['name','age']] #选取指定的第2行和第3行,name和age列的数据
df.loc[df['gender']=='M','name'] #选取gender列是M,name列的数据
df.loc[df['gender']=='M',['name','age']] #选取gender列是M,name和age列的数据
3. iloc,在column name特别长或者index是时间序列等各种不方便输入的情况下,可以用iloc (i = index), iloc完全用数字来定位 iloc[row_index, column_index]
[python]
view plain
copy
print?
df.iloc[0,0] #第0行第0列的数据,'Snow'
df.iloc[1,2] #第1行第2列的数据,32
df.iloc[[1,3],0:2] #第1行和第3行,从第0列到第2列(不包含第2列)的数据
df.iloc[1:3,[1,2] #第1行到第3行(不包含第3行),第1列和第2列的数据
4. ix, ix很强大,loc和iloc的功能都能做到 ix[row_index, column_index]
[python]
view plain
copy
print?
df.ix[0,0] #第0行第0列的数据,'Snow'
df.ix[0,[1,2]] #第0行,第1列和第2列的数据
df.ix[0:2,[1,2]] #第0行到第2行(包含第3行),第1列和第2列的数据
df.ix[1,0:2] #第1行,从第0列到第2列(不包含第2列)的数据
切片时,iloc行不含下标上限,loc,ix行包含,列iloc和ix都不含列下标上限
9b55
DataFrame的时候,对于数据的选取,修改和切片经常困惑,这里总结了一些常用的操作。
先初始化一个DateFrame做例子
[python]
view plain
copy
print?
import numpy as np
import pandas as pd
df = pd.DataFrame([['Snow','M',22],['Tyrion','M',32],['Sansa','F',18],['Arya','F',14]], columns=['name','gender','age'])
import numpy as np import pandas as pd df = pd.DataFrame([['Snow','M',22],['Tyrion','M',32],['Sansa','F',18],['Arya','F',14]], columns=['name','gender','age'])
df是这样的
[python]
view plain
copy
print?
In [35]: df
Out[35]:
name gender age
0 Snow M 22
1 Tyrion M 32
2 Sansa F 18
3 Arya F 14
In [35]: df Out[35]: name gender age 0 Snow M 22 1 Tyrion M 32 2 Sansa F 18 3 Arya F 14
如果每列都有column name,比如这里是:
[python]
view plain
copy
print?
In [42]: df.columns
Out[42]: Index(['name', 'gender', 'age'], dtype='object')
In [42]: df.columns Out[42]: Index(['name', 'gender', 'age'], dtype='object')
1. df['column_name'] ,df[row_start_index, row_end_index] 选取指定整列数据
[python]
view plain
copy
print?
df['name']
df['gender']
df[['name','gender']] #选取多列,多列名字要放在list里
df[0:] #第0行及之后的行,相当于df的全部数据,注意冒号是必须的
df[:2] #第2行之前的数据(不含第2行)
df[0:1] #第0行
df[1:3] #第1行到第2行(不含第3行)
df[-1:] #最后一行
df[-3:-1] #倒数第3行到倒数第1行(不包含最后1行即倒数第1行,这里有点烦躁,因为从前数时从第0行开始,从后数就是-1行开始,毕竟没有-0)
df['name'] df['gender'] df[['name','gender']] #选取多列,多列名字要放在list里 df[0:] #第0行及之后的行,相当于df的全部数据,注意冒号是必须的 df[:2] #第2行之前的数据(不含第2行) df[0:1] #第0行 df[1:3] #第1行到第2行(不含第3行) df[-1:] #最后一行 df[-3:-1] #倒数第3行到倒数第1行(不包含最后1行即倒数第1行,这里有点烦躁,因为从前数时从第0行开始,从后数就是-1行开始,毕竟没有-0)
2. loc,在知道列名字的情况下,df.loc[index,column] 选取指定行,列的数据
[python]
view plain
copy
print?
# df.loc[index, column_name],选取指定行和列的数据
df.loc[0,'name'] # 'Snow'
df.loc[0:2, ['name','age']] #选取第0行到第2行,name列和age列的数据, 注意这里的行选取是包含下标的。
df.loc[[2,3],['name','age']] #选取指定的第2行和第3行,name和age列的数据
df.loc[df['gender']=='M','name'] #选取gender列是M,name列的数据
df.loc[df['gender']=='M',['name','age']] #选取gender列是M,name和age列的数据
# df.loc[index, column_name],选取指定行和列的数据 df.loc[0,'name'] # 'Snow' df.loc[0:2, ['name','age']] #选取第0行到第2行,name列和age列的数据, 注意这里的行选取是包含下标的。 df.loc[[2,3],['name','age']] #选取指定的第2行和第3行,name和age列的数据 df.loc[df['gender']=='M','name'] #选取gender列是M,name列的数据 df.loc[df['gender']=='M',['name','age']] #选取gender列是M,name和age列的数据
3. iloc,在column name特别长或者index是时间序列等各种不方便输入的情况下,可以用iloc (i = index), iloc完全用数字来定位 iloc[row_index, column_index]
[python]
view plain
copy
print?
df.iloc[0,0] #第0行第0列的数据,'Snow'
df.iloc[1,2] #第1行第2列的数据,32
df.iloc[[1,3],0:2] #第1行和第3行,从第0列到第2列(不包含第2列)的数据
df.iloc[1:3,[1,2] #第1行到第3行(不包含第3行),第1列和第2列的数据
df.iloc[0,0] #第0行第0列的数据,'Snow' df.iloc[1,2] #第1行第2列的数据,32 df.iloc[[1,3],0:2] #第1行和第3行,从第0列到第2列(不包含第2列)的数据 df.iloc[1:3,[1,2] #第1行到第3行(不包含第3行),第1列和第2列的数据
4. ix, ix很强大,loc和iloc的功能都能做到 ix[row_index, column_index]
[python]
view plain
copy
print?
df.ix[0,0] #第0行第0列的数据,'Snow'
df.ix[0,[1,2]] #第0行,第1列和第2列的数据
df.ix[0:2,[1,2]] #第0行到第2行(包含第3行),第1列和第2列的数据
df.ix[1,0:2] #第1行,从第0列到第2列(不包含第2列)的数据
df.ix[0,0] #第0行第0列的数据,'Snow' df.ix[0,[1,2]] #第0行,第1列和第2列的数据 df.ix[0:2,[1,2]] #第0行到第2行(包含第3行),第1列和第2列的数据 df.ix[1,0:2] #第1行,从第0列到第2列(不包含第2列)的数据
切片时,iloc行不含下标上限,loc,ix行包含,列iloc和ix都不含列下标上限
相关文章推荐
- pandas、DataFrame、python三者的关联性
- python pandas dataframe 行列选择,切片操作 原创 2017年02月15日 21:43:18 标签: python 30760 python pandas dataframe
- python中pandas库中DataFrame对行和列的操作使用方法
- python数据分析之pandas库的DataFrame应用一
- Python之Pandas中Series、DataFrame实践
- Python: Pandas的DataFrame如何按指定list排序
- python pandas ---Series,DataFrame 创建方法,操作运算操作(赋值,sort,get,del,pop,insert,+,-,*,/)
- Python pandas基础: Series和DataFrame的简单介绍
- Python之Pandas中Series、DataFrame实践
- python pandas.DataFrame 数据合并
- python pandas 对series和dataframe的重置索引reindex方法
- python的pandas中DataFrame 基础,创建DataFrame和增删改查基本操作(1)
- python pandas中series与dataframe
- python中pandas库中DataFrame对行和列的操作使用方法
- 我的python学习笔记(4) pandas 之 Series, DataFrame
- python—pandas中DataFrame类型数据操作函数
- Python基于pandas实现json格式转换成dataframe的方法
- python pandas包操作以及dataframe
- python中pandas库中DataFrame对行和列的操作使用方法
- [置顶] 【python pandas】 Dataframe的数据print输出 显示为...省略号