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 index, row in df.iteritems():
    print(index) # 输出列名
    print(getattr(row, 'c1'), getattr(row, 'c2')) # 输出每一行

3.iteritems()

for index, row in df.iteritems():
    print(index) # 输出列名
    print(row[0], row[1], row[2]) # 输出各列

查询行

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)

猜你喜欢

转载自blog.csdn.net/qq_32505207/article/details/106472895