DataFrame行列操作方法(二)

一些DataFrame的行列操作方法。

新建一个DataFrame对象,代码如下:

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

输出结果:

      col1  col2  col3  col4
row1     1     2     3     4
row2     5     6     7     8
row3     9    10    11    12

 

1、行列整体操作

df.index,df.index.values,df.columns,df.columns.values,代码:

print(df.index)  # 列索引
print('---------------------------------')
print(df.index.values) # 列索引值列表
print('---------------------------------')
print(df.columns) # 行索引
print('---------------------------------')
print(df.columns.values) # 行索引值列表
print('---------------------------------')
print(df.head(2)) # 取df前2行
print('---------------------------------')
print(df.tail(2)) # 取df后2行

输出结果:
---------------------------------
Index(['row1', 'row2', 'row3'], dtype='object')
---------------------------------
['row1' 'row2' 'row3']
---------------------------------
Index(['col1', 'col2', 'col3', 'col4'], dtype='object')
---------------------------------
['col1' 'col2' 'col3' 'col4']
---------------------------------
      col1  col2  col3  col4
row1     1     2     3     4
row2     5     6     7     8
---------------------------------
      col1  col2  col3  col4
row2     5     6     7     8
row3     9    10    11    12

df.sum(), df.apply(),df**2,代码:

print(df.sum())
print('----------------------------------')
print(df.apply(lambda row: row**2))
print('----------------------------------')
print(df ** 2)

输出结果:
----------------------------------
col1    15
col2    18
col3    21
col4    24
dtype: int64
----------------------------------
      col1  col2  col3  col4
row1     1     4     9    16
row2    25    36    49    64
row3    81   100   121   144
----------------------------------
      col1  col2  col3  col4
row1     1     4     9    16
row2    25    36    49    64
row3    81   100   121   144

 

2、直接使用df取DataFrame值

取列操作:

print(df['col2']) # 选择表格中的'col2'列,使用类字典属性,返回的是Series类型
print('-------------------------------')
print(df[['col2']]) # 选择表格中的'col2'列,返回的是DataFrame类型
print('-------------------------------')
print(df[['col1','col3']]) # 选择表格中的'col1','col3'列
print('-------------------------------')
print(df.col2) # 选择表格中的'col2'列,使用点属性,返回的是Series类型

输出结果:
-------------------------------
row1     2
row2     6
row3    10
Name: col2, dtype: int64
-------------------------------
      col2
row1     2
row2     6
row3    10
-------------------------------
      col1  col3
row1     1     3
row2     5     7
row3     9    11
-------------------------------
row1     2
row2     6
row3    10
Name: col2, dtype: int64

取行操作:

print(df[1:2])   # 以下标取第二行
print('-------------------------------')
print(df['row2':'row2']) # 以索引取row2行
print('-------------------------------')
print(df['row2':'row3']) # 以索引取row2-row3行
print('-------------------------------')
print(df['col2']['row3']) # 第二列第三行数据,只能使用索引

输出结果
-------------------------------
      col1  col2  col3  col4
row2     5     6     7     8
-------------------------------
      col1  col2  col3  col4
row2     5     6     7     8
-------------------------------
      col1  col2  col3  col4
row2     5     6     7     8
row3     9    10    11    12
-------------------------------
10

3、df.loc或df.iloc取DataFrame值

df.loc取DataFrame值,只能使用行列索引;df.iloc操作类似,只能使用下标:

print('---------------------------------')
print(df.loc['row2'])           # 取index为row2行的数据
print('---------------------------------')
print(df.loc[['row2']])         # 按照index的序值,取index为row2行的数据
print('---------------------------------')
print(df.loc[:,'col2'])         # 取col2列数据
print('---------------------------------')
print(df.loc['row1']['col2'])  # 取row1行,col2列数据

输出结果
---------------------------------
col1    5
col2    6
col3    7
col4    8
Name: row2, dtype: int64
---------------------------------
      col1  col2  col3  col4
row2     5     6     7     8
---------------------------------
row1     2
row2     6
row3    10
Name: col2, dtype: int64
---------------------------------
2

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值