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函数方法的使用