pandas 行列的查询遍历删除增加操作
·
遍历
- iterrows(): 按行遍历,将DataFrame的每一行迭代为(index, Series)对,可以通过row[name]对元素进行访问。
- itertuples(): 按行遍历,将DataFrame的每一行迭代为元祖,可以通过row[name]对元素进行访问,比iterrows()效率高。
- iteritems():按列遍历,将DataFrame的每一列迭代为(列名, Series)对,可以通过row[index]对元素进行访问。
c1 c2
0 x c
1 c v
2 s e
1.iterrows():
# 对于每一行,通过列名name访问对应的元素
for index,row in df.iterrows():
print(index) # 输出每行的索引值
print(row['c1'], row['c2']) # 输出每一行
2.itertuples()
for row in df.itertuples():
print(row.c1) # 输出每一行
3.iteritems()
# 使用 iteritems() 遍历 DataFrame 的列
for column_name, series in df.iteritems():
print(f'Column Name: {column_name}')
print('Series Data:')
print(series)
查询行
1.查询第一行
# 第一行数据
df.irow(0)
# 第一列
df.icol(0)
2.最后一行
df.iloc[-1]
3.精确查询某一列的某一行单值
# 查询index=index_name那一行中column=col_name的那一个值
df.loc[index_name,col_name]
# 查询index=index_name那一行中columns=[col_name,col_name2]的series
df.loc[index_name,[col_name1,col_name2]
# 查询index=[index_name1,index_name2,index_name3],column=col_name的值
df.loc[[index_name1,index_name2,index_name3],col_name]
df = DataFrame(randn(5,2),index=range(0,10,2),columns=list('AB'))
A B
0 1.068932 -0.794307
2 -0.470056 1.192211
4 -0.284561 0.756029
6 1.037563 -0.267820
8 -0.538478 -0.800654
//按照index的序值
In [5]: df.iloc[[2]]
Out[5]:
A B
4 -0.284561 0.756029
//按照index的具体值
In [6]: df.loc[[2]]
Out[6]:
A B
2 -0.470056 1.192211
4.条件查询某些行
#name列名称等于yu的所有行
df.loc[df.name=='yu']
5.多条件条件查询
df.loc([(df.name>1) & (df.age <10)])
6.利用函数查询
# 查询index起始位2018-10的数据
def func(x):
return x.index.str.startwith('2018-10')
df.loc[func]
7.查询index=index_name的所有行
df.loc[df.index==index_name]
删除某行
1.知道某行的index
df.drop(index_name)
2.条件删除某一行
# 删除列名称是=name的所有行
df.drop(df[df['name'] == 'yu'].index)
# 删除第一行
df.drop(index=0,inplace=True)
# 删除index=23的行
df.drop(23,inplace=True)
# 多条件删除行
df.drop(df[(df.name == 'yu') & (df.age ==12)].index)
增加行
1.在头部增加一行
# 替换第一行,index_name没有就是增加一行,有就是替换index_name的一行
df.loc[index_name] = [1,2,3,4,5]
2.顺延dataframe,在增加一行
# 所有的dataframe往后顺延2行,开始的2行全部为Nan
df.shift(period=2)
df.loc[index_name] = [12,3,4,5]
3.在某个位置添加一行
# 利用reindex先增加index的值,然后再添加Series
s = df.reindex(df.index.insert(0,'name'))
df.loc['name'] = [1,2,3,4]
4.利用append增加一行
# 增加一行index为sex,值是列表的值
s=pd.Series([12,3,4,5],columns=df.columns,name='sex')
df.append(s)
# 没有name的series的添加方法,添加的一行是没有index
s = pd.Series([1,2,3,4],columns=df.columns)
df.append(s,ignore_index=True)
更多推荐
所有评论(0)