1、DataFrame索引函数
df.iloc()
括号中的参数可选:整数,整数列表,整数切片。df.loc()
括号中的参数可选:标签,标签列表,标签切片。ix
是 iloc
和 loc
的结合。at
和loc
作用类似,但用来读取某个元素,iat是iloc
的作用差不多,也是用来读取某个元素。
例如,
""" loc函数:基于`标签`选择数据 iloc函数:按`索引位置`选择数据 at函数:基于`标签`选择一个值 iat函数:基于`索引位置`选择一个值 """ import pandas as pd df = pd.DataFrame({'a':["A","B","C"], 'b': [1, 2, 3],'c': ['a', 'b', 'c']}) print("df:") print(df) print("df['c']-----------") print(df['c']) print("df:") print(df) print("df[0:2]-----------") print(df[0:2]) print("df:") print(df) print("df[['b','c']]-----------") print(df[["b","c"]]) print("df:") print(df) print("df.loc[1,:]-----------") print(df.loc[1,:]) print("df:") print(df) print("df.loc[:,['b','c']]-----------") print(df.loc[:,['b','c']]) print("df:") print(df) print("df.loc[0]-----------") print(df.loc[0]) print("df:") print(df) print("df.loc[0:1, ['a', 'b', 'c']]-----------") print(df.loc[0:1, ['a', 'b', 'c']]) print("df:") print(df) print("df.iloc[1]-----------") print(df.iloc[1]) # 整数位置选择 print("df:") print(df) print("df.iloc[1:3, :]-----------") print(df.iloc[1:3, :]) # 整数位置选择 print("df:") print(df) print("df.iloc[2:3,0:2]-----------") print(df.iloc[2:3,0:2]) #整数切片 print("df:") print(df) print("df.iloc[[1, 2, 4], [0, 2]]-----------") print(df.iloc[[0, 2], [0, 2]]) # 整数列表按位置切片 print("df:") print(df) print("df.iloc[:, 1:3]-----------") print(df.iloc[:, 1:3]) print("df:") print(df) print("df.iloc[1, 1]-----------") print(df.iloc[1, 1]) print("df:") print(df) print("df.at[2, 'a']-----------") print(df.at[2, 'a']) print("df:") print(df) print("df.iat[1, 1]-----------") print(df.iat[1, 1]) print("df:") print(df) print("df[df.b>2]-----------") print(df[df.b>2])
相关文档:
Python pandas.DataFrame.iloc函数方法的使用
Python pandas.DataFrame.loc函数方法的使用
Python pandas dataframe iloc 和 loc 的用法及区别
Python pandas.DataFrame.at函数方法的使用
Python pandas.DataFrame.iat函数方法的使用
2、行操作
1)选择指定行
import pandas as pd df = pd.DataFrame({'a':["A","B","C"], 'b': [1, 2, 3],'c': ['a', 'b', 'c']}) print(df.loc[1,:])
2)选择多行
import pandas as pd df = pd.DataFrame({'a':["A","B","C"], 'b': [1, 2, 3],'c': ['a', 'b', 'c']}) print(df.loc[1:2,:])#选择1:2行,slice为1 print(df.loc[::-1,:])#选择所有行,slice为-1,所以为倒序 print(df.loc[0:2:2,:])#选择0至2行,slice为2,等同于print(df.loc[0:2:2,:])因为只有3行
3)添加行
import pandas as pd df = pd.DataFrame({'a':["A","B","C"], 'b': [1, 2, 3],'c': ['a', 'b', 'c']}) df.loc[3,:]=4 print(df)
4)交换行
import pandas as pd df = pd.DataFrame({'a':["A","B","C"], 'b': [1, 2, 3],'c': ['a', 'b', 'c']}) df.loc[[1,2],:]=df.loc[[2,1],:].values print(df)
5)删除行
import pandas as pd df = pd.DataFrame({'a':["A","B","C"], 'b': [1, 2, 3],'c': ['a', 'b', 'c']}) df.drop(0,axis=0,inplace=True) print(df)
3、列操作
1)更改列名
import pandas as pd df = pd.DataFrame({'a':["A","B","C"], 'b': [1, 2, 3],'c': ['a', 'b', 'c']}) df.columns = df.columns.str.strip() # 把columns当成series看待 df.columns = df.columns.map(lambda x:x) # 使用map函数 df.rename(columns={'b':'cjavapy'}, inplace=True) print(df)
2)选择指定列
import pandas as pd df = pd.DataFrame({'a':["A","B","C"], 'b': [1, 2, 3],'c': ['a', 'b', 'c']}) print(df.loc[:,"a"])
3)选择多列
import pandas as pd df = pd.DataFrame({'a':["A","B","C"], 'b': [1, 2, 3],'c': ['a', 'b', 'c']}) print(df.loc[:,"a":"b"])
4)添加列
import pandas as pd df = pd.DataFrame({'a':["A","B","C"], 'b': [1, 2, 3],'c': ['a', 'b', 'c']}) df.loc[:,"d"]=4 print(df)
注意:如果对已有的列,则是赋值。
5)交换两列的值
import pandas as pd df = pd.DataFrame({'a':["A","B","C"], 'b': [1, 2, 3],'c': ['a', 'b', 'c']}) df.loc[:,['b', 'a']] = df.loc[:,['a', 'b']].values print(df)
6)删除列
import pandas as pd df = pd.DataFrame({'a':["A","B","C"], 'b': [1, 2, 3],'c': ['a', 'b', 'c']}) del df['b'] #DF.drop('b', 1);#df.drop('b',axis=1, inplace=True) print(df)
5、行列的合并
1)合并行
import pandas as pd df = pd.DataFrame({'Name': ['apple','banana','cherry',' ', 'grape', 'orange', 'pineapple','']}) m = df['Name'].str.contains('\w+') df = df[m].groupby((~m).cumsum(), as_index=False).agg(', '.join) print (df)
2)合并列
import pandas as pd import numpy as np df = pd.DataFrame(data={'语文':[50,90,70,78,60], '数学':[59,80,60,75,69], '英语':[61,95,65,80,59]}, index=['Harry','Andy','Rita','Lee','Jack']) # 添加'总分'字段 df['总分'] = df['语文'] + df['数学'] + df['英语'] # 调用np.where # 添加'语文评级','数学评级','英语评级'字段 df['语文评级'] = np.where(df['语文'] > 60,'√','×') df['数学评级'] = np.where(df['数学'] > 60,'√','×') df['英语评级'] = np.where(df['英语'] > 60,'√','×') # 将多列合并为一列,生成'评级合并'字段 df['评级合并'] = df['语文评级'].map(str) + df['数学评级'].map(str) + df['英语评级'].map(str)
相关文档:
Python pandas.DataFrame.iloc函数方法的使用
Python pandas.DataFrame.loc函数方法的使用
Python pandas dataframe iloc 和 loc 的用法及区别
Python pandas.DataFrame.at函数方法的使用
Python pandas.DataFrame.iat函数方法的使用