Python pandas的DataFrame获取行数、列数、索引、元素值,及添加和删除行列

一、获取行数、列数

>>> df = pd.DataFrame(np.arange(12).reshape(3, 4), index = ['row1', 'row2', 'row3'], columns=['col1', 'col2', 'col3', 'col4'])
>>> 
>>> df
      col1  col2  col3  col4
row1     0     1     2     3
row2     4     5     6     7
row3     8     9    10    11
>>> 

# 获取行数
>>> df.shape[0]
3

>>> len(df)
3

>>> df.iloc[:,0].size
3

# 获取列数
>>> df.shape[1]
4

>>> df.columns.size
4

二、获取索引、元素值

>>> df = pd.DataFrame(np.arange(12).reshape(3, 4), index = ['row1', 'row2', 'row3'], columns=['col1', 'col2', 'col3', 'col4'])
>>> 
>>> df
      col1  col2  col3  col4
row1     0     1     2     3
row2     4     5     6     7
row3     8     9    10    11

# 获取索引
>>> df.ix[[0]].index.values[0]
'row1'

# 获取元素,0行0列
>>> df.ix[[0]].values[0][0]
0

# 获取元素,0行1列
>>> df.ix[[0]].values[0][1]
1

三、增加行、列

>>> df = pd.DataFrame(np.arange(12).reshape(3, 4), index = ['row1', 'row2', 'row3'], columns=['col1', 'col2', 'col3', 'col4'])
>>> 
>>> df
      col1  col2  col3  col4
row1     0     1     2     3
row2     4     5     6     7
row3     8     9    10    11
 
# 增加行
>>> df.loc['row4']=[12,13,14,15]
>>> 
>>> df
      col1  col2  col3  col4
row1     0     1     2     3
row2     4     5     6     7
row3     8     9    10    11
row4    12    13    14    15
 
# 增加列
>>> df['col5']=[11,22,33,44]
>>> 
>>> df
      col1  col2  col3  col4  col5
row1     0     1     2     3    11
row2     4     5     6     7    22
row3     8     9    10    11    33
row4    12    13    14    15    44

四、删除行、列

>>> df = pd.DataFrame(np.arange(12).reshape(3, 4), index = ['row1', 'row2', 'row3'], columns=['col1', 'col2', 'col3', 'col4'])
>>> 
>>> df
      col1  col2  col3  col4
row1     0     1     2     3
row2     4     5     6     7
row3     8     9    10    11

# 删除行
>>> df.drop(['row1'], axis=0)
      col1  col2  col3  col4
row2     4     5     6     7
row3     8     9    10    11

# 删除列
>>> df.drop(['col4'], axis=1)
      col1  col2  col3
row1     0     1     2
row2     4     5     6
row3     8     9    10

按条件删除行、列的方法:

# 删除dataframe的id大于100且小于200的所有行
df = df.drop(df[(df.id > 100) & (df.id < 200)].index)

# 删除dataframe的name列
df = df.drop('name', axis=1)

五、插入行、列

>>> df = pd.DataFrame(np.arange(12).reshape(3, 4), index = ['row1', 'row2', 'row3'], columns=['col1', 'col2', 'col3', 'col4'])
>>> 
>>> df
      col1  col2  col3  col4
row1     0     1     2     3
row2     4     5     6     7
row3     8     9    10    11

# 插入列
>>> df.insert(2,'col_insert',[11,22,33])
>>> 
>>> df
      col1  col2  col_insert  col3  col4
row1     0     1          11     2     3
row2     4     5          22     6     7
row3     8     9          33    10    11
>>> df = pd.DataFrame(np.arange(12).reshape(3, 4), index = ['row1', 'row2', 'row3'], columns=['col1', 'col2', 'col3', 'col4'])
>>> 
>>> df
      col1  col2  col3  col4
row1     0     1     2     3
row2     4     5     6     7
row3     8     9    10    11

# 先插入行在最后
>>> df.loc['row12']=[11,22,33,44]
>>> 
>>> df
       col1  col2  col3  col4
row1      0     1     2     3
row2      4     5     6     7
row3      8     9    10    11
row12    11    22    33    44

# 然后插入行序号
>>> df['rowindex']=[1,3,4,2]
>>> 
>>> df
       col1  col2  col3  col4  rowindex
row1      0     1     2     3         1
row2      4     5     6     7         3
row3      8     9    10    11         4
row12    11    22    33    44         2

# 再按行号排序,得到结果 
>>> df=df.sort_values(by='rowindex')
>>> 
>>> df
       col1  col2  col3  col4  rowindex
row1      0     1     2     3         1
row12    11    22    33    44         2
row2      4     5     6     7         3
row3      8     9    10    11         4

六、append方法添加行

DataFrame.append(other, ignore_index=False, verify_integrity=False, sort=False)

引用

【1】https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.drop.html

【2】https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.insert.html

【3】https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.append.html

  • 4
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值